如果列值中不存在分隔符,Mysql split_str 函数将返回空值

标签 mysql

我正在使用以下用户定义的 mysql 函数,

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');


`select split_str(‘1||john’,'||’,2);` - result "john".

但是如果列值没有分隔符字符串(||),则此函数不起作用

select split_str(‘john’,'||’,2); - required result john.

但我得到的是空值。有什么建议请提出来

最佳答案

尝试

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN case when CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) = CHAR_LENGTH(x) then x else (REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '')) end;

你可以在这里查看。 http://sqlfiddle.com/#!2/aab54/2

关于如果列值中不存在分隔符,Mysql split_str 函数将返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228757/

相关文章:

MySQL 使用 WHERE 和空值进行连接

php - 如何排除 Laravel 中的特定行?

mysql - 使用 mysql 的 django 上的syncdb错误

mysql - 只列出在 mysql 中出现三次的行

Python MySQL更新语句不起作用

mysql - 当 count <= 3 时更改另一列的值

php - 使用 while 循环遍历结果一次

PHP SQL 查询错误 - WHERE 子句中未知的数组列

php - 自动完成功能无法正常工作

mysql - 使用 concat 并保持变量的长度