如果我有两列和数据,如:
第a列 | 第b列
1 | 1,2,3,4,5 4 | 1,2,3,4,5 5 | 1,2,3,4,5
是否有任何函数可以在column a
中获得column b
位置,第一个数据结果为0,第二个数据为3,第三个应为4
答案 0 :(得分:2)
您可以使用FIND_IN_SET
:
SELECT col_a, colb_b,
FIND_IN_SET(col_a, col_b) - 1 AS result
FROM tab;
的 SqlFiddleDemo
强>
输出:
╔═══════╦════════════╦════════╗
║ cola ║ colb ║ result ║
╠═══════╬════════════╬════════╣
║ 1 ║ 1,2,3,4,5 ║ 0 ║
║ 4 ║ 1,2,3,4,5 ║ 3 ║
║ 5 ║ 1,2,3,4,5 ║ 4 ║
╚═══════╩════════════╩════════╝
如果找不到,您将获得-1
。
在SQL中,函数大多是基于1的。这就是您需要-1
。
我强烈建议您对数据进行规范化,并将原子值存储在列中。