使用mysql拆分字符串

Ani*_*r.C 23 mysql string split

我想创建一个存储过程,它将匹配两个表.我的要求是根据用户传递的列作为输入匹配两个表.

句法:

CREATE PROCEDURE reconcile.matchTables(
  IN TAB1 VARCHAR(25), 
  IN TAB1 VARCHAR(25), 
  IN COLS1 VARCHAR(250) , 
  IN COLS2 VARCHAR(250))
Run Code Online (Sandbox Code Playgroud)

EX:

matchTables('table1', 'table2', 'col1#col2#col3#col4' , 'col2#col13#col1#col8')
Run Code Online (Sandbox Code Playgroud)

现在,存储过程应该像下面那样形成where子句

table1.col1 = table2.col2 
  and table1.col2 = table2.col13 
  and table1.col3 = table2.col1 
  and table1.col4 = table2.col8
Run Code Online (Sandbox Code Playgroud)

Nil*_*tel 3

MySQL 不包含分割分隔字符串的函数。然而,创建自己的函数非常容易。

\n\n

用户定义函数:

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

功能:

\n\n
CREATE FUNCTION SPLIT_STR(\n  x VARCHAR(255),\n  delim VARCHAR(12),\n  pos INT\n)\nRETURNS VARCHAR(255)\nRETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),\n       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),\n       delim, '');\n
Run Code Online (Sandbox Code Playgroud)\n\n

用法:

\n\n
SELECT SPLIT_STR(string, delimiter, position)\n
Run Code Online (Sandbox Code Playgroud)\n