首页 > 解决方案 > 删除多余的后缀或将其移至另一列

问题描述

我有这样的桌子

-----------------------------------
| id |  col_name  |  colname_suf  |
-----------------------------------
| 1  | textSuff_ix| null          |
| 2  | strSuff_ix2| null          |
|  ...                            |
-----------------------------------

我的解决方案的主要思想是将后缀移动到另一列。但是后缀和之前的文本可以在已知范围内(text1、text2、str、Suff_ix1、Suff_ix2、Suff_ix3...)。我如何使用 sql 查询修复它?

标签: sqlsql-server

解决方案


使用left(),right()和之类的字符串函数charindex()来拆分列并更新:

update tablename
set [col_name] = left([col_name], charindex('_', [col_name]) - 1),
    [colname_suf] = right([col_name], len([col_name]) - charindex('_', [col_name]))
where [col_name] like '%[_]%';

请参阅演示
结果:

> id | col_name | colname_suf
> -: | :------- | :----------
>  1 | textSuff | ix         
>  2 | strSuff  | ix2       

推荐阅读