我想问一下如何从列中拆分字符串(表格中的所有行)" "并将结果插入到同一个表中的另一列?
非常感谢您的任何建议。
表结构示例:
------------------------------------------
| Original string | Spliced string |
------------------------------------------
| Some string 001 | Some,String,001 |
------------------------------------------
答案 0 :(得分:0)
如果我需要在分隔符上“分割”一个字符串,我可能会使用漂亮的SUBSTRING_INDEX
函数。但是有一些怪癖需要注意。
我将采取的方法肯定是先写一个SELECT语句。这将包括SELECT列表中的表达式,它返回我想要分配给另一列的“分离”值。在编写UPDATE语句之前,我会使用SELECT语句测试这些表达式。
SELECT t.id
, t.column_i_want_to_split
, expr1
FROM mytable t
ORDER BY t.id
为了测试特定情况,我会使用内联视图
SELECT t.id
, t.note
, t.val
, expr1
FROM ( SELECT 1 AS id, 'empty string test' AS note, '' AS val
UNION ALL SELECT 2, 'null', NULL
UNION ALL SELECT 3, 'one space', ' '
UNION ALL SELECT 4, 'four spaces', ' '
UNION ALL SELECT 5, 'test5', ' abc def '
UNION ALL SELECT 6, 'test6', 'g hi kl m'
) t
ORDER BY t.id
一旦我将表达式返回到我想要分配给另一列的值,我就将SELECT转换为UPDATE语句。要处理所有行,请省略WHERE子句。
UPDATE mytable t
SET t.another_column = expr1
如果没有更明确的规范,或者至少是你试图实现的一些具体例子,我们只是在猜测。只给出问题的一般描述,我们所能提供的只是一些一般性建议。