我有一个string像这样的专栏
India_Project1_BA_Protex_123
Japan_ProQ_CXR_Tbxc_3456
Run Code Online (Sandbox Code Playgroud)
我需要选择Project1_BA或ProQ_CXR喜欢这个mySQL
Alp*_*ale 15
有两个函数用于提取字符串的某些部分,它们是SUBSTRING&SPLITSTRING但SUBSTRING不能在这种情况下使用,并且SPLITSTRING不存在MySql.所以你必须编写自己的函数:
MySQL不包含拆分字符串的功能.但是,创建自己的功能非常容易.
创建函数语法
一个用户定义的函数是到MySQL与就像一个本地的MySQL功能的新功能扩展的方式.
Run Code Online (Sandbox Code Playgroud)CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}要创建函数,您必须具有数据库的INSERT特权.
拆分字符串
以下示例函数接受3个参数,使用SQL函数执行操作,并返回结果.
功能
Run Code Online (Sandbox Code Playgroud)CREATE FUNCTION SPLIT_STR( x VARCHAR(255), delim VARCHAR(12), pos INT ) RETURNS VARCHAR(255) RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '');用法
Run Code Online (Sandbox Code Playgroud)SELECT SPLIT_STR(string, delimiter, position)例
Run Code Online (Sandbox Code Playgroud)SELECT SPLIT_STR('India_Project1_BA_Protex_123', '_', 2) as second; SELECT SPLIT_STR('India_Project1_BA_Protex_123', '_', 3) as third; +------------++-------+ | second || third | +------------++-------+ | Project1 || BA | +------------++-------+ | ProQ || CXR | +------------++-------+
现在您可以连接两个结果.得到你的最终结果.
完整的教程:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
希望这可以帮助.
这对你有用吗?
SELECT * FROM table WHERE colum LIKE '%Project1_BA%' OR column LIKE '%ProQ_CXR%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13617 次 |
| 最近记录: |