0

次のユーザー定義の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.

しかし、私は空の値を取得しています。何か提案をください

4

1 に答える 1

0

試す

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

于 2013-08-14T10:20:30.133 に答える