我想创建一个存储过程来匹配两个表。我的要求是根据用户作为输入传递的列来匹配两个表。
语法:
CREATE PROCEDURE reconcile.matchTables(
IN TAB1 VARCHAR(25),
IN TAB1 VARCHAR(25),
IN COLS1 VARCHAR(250) ,
IN COLS2 VARCHAR(250))
例如:
matchTables('table1', 'table2', 'col1#col2#col3#col4' , 'col2#col13#col1#col8')
现在存储过程应该像下面这样组成 where 子句
table1.col1 = table2.col2
and table1.col2 = table2.col13
and table1.col3 = table2.col1
and table1.col4 = table2.col8
最佳答案
MySQL 不包含拆分定界字符串的函数。但是,创建您自己的函数非常容易。
用户自定义函数:
CREATE [AGGREGATE] FUNCTION function_name
RETURNS {STRING|INTEGER|REAL|DECIMAL}
功能:
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, '');
用法:
SELECT SPLIT_STR(string, delimiter, position)
关于mysql - 使用mysql拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914199/