在mysql中选择一个字符串的一部分

Gul*_*rej 4 mysql

我有一个string像这样的专栏

India_Project1_BA_Protex_123

Japan_ProQ_CXR_Tbxc_3456
Run Code Online (Sandbox Code Playgroud)

我需要选择Project1_BAProQ_CXR喜欢这个mySQL

Alp*_*ale 15

有两个函数用于提取字符串的某些部分,它们是SUBSTRING&SPLITSTRINGSUBSTRING不能在这种情况下使用,并且SPLITSTRING不存在MySql.所以你必须编写自己的函数:

MySQL不包含拆分字符串的功能.但是,创建自己的功能非常容易.

创建函数语法

一个用户定义的函数是到MySQL与就像一个本地的MySQL功能的新功能扩展的方式.

CREATE [AGGREGATE] FUNCTION function_name
RETURNS {STRING|INTEGER|REAL|DECIMAL}
Run Code Online (Sandbox Code Playgroud)

要创建函数,您必须具有数据库的INSERT特权.

拆分字符串

以下示例函数接受3个参数,使用SQL函数执行操作,并返回结果.

功能

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   |
+------------++-------+
Run Code Online (Sandbox Code Playgroud)

现在您可以连接两个结果.得到你的最终结果.

完整的教程:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

希望这可以帮助.

  • @Gulrej如果有帮助,请接受答案......谢谢. (2认同)

Jon*_*s T 3

这对你有用吗?

SELECT * FROM table WHERE colum LIKE '%Project1_BA%' OR column LIKE '%ProQ_CXR%'
Run Code Online (Sandbox Code Playgroud)