mysql - 使用mysql拆分字符串

标签 mysql string split

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

语法:

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/

相关文章:

python - 将数据和标签拆分为 pandas 数据框中的两个单独的列

mysql - 对现有 mysql 表进行分区

regex - 如何按符号和字母拆分

mysql - 如何在mysql中使用两列进行排序?

R:将向量插入字符串的每个其他字符

c++ - strcspn() 和 strpbrk() 有什么区别?

c++ - C中动态分配的字符串

java 从字符串中提取以逗号分隔的元素

mysql - 表中给定值的最大出现次数

python - 避免重复输入错误