首页 > 解决方案 > SQL根据if语句添加列

问题描述

我有一个包含 4 个字符 (col1) 的表格,我想:

col1 剩下
xx01 xx 01 01.1
xy01 xy 01 01.2
xz01 xz 01 01.3

有点 SQL 菜鸟所以感谢任何建议。谢谢!

标签: sqlif-statementconcatenation

解决方案


由于 col1 长度是 4 位固定的,所以这里的一半表示 2 位。您可以对 col1 的完整值或 LEFT(col1, 2) 执行 ORDER BY 操作。

-- SQL SERVER
SELECT col1, LEFT(col1, 2) "left"
     , RIGHT(col1, 2) "right"
     , RIGHT(col1, 2) + '.' + CAST((ROW_NUMBER() OVER (ORDER BY col1)) AS VARCHAR(2)) fin
FROM test

请从网址https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=d76d9c504472f93ed3e4c53b88b94f57检查

使用 CASE 语句

SELECT col1, LEFT(col1, 2) "left"
     , RIGHT(col1, 2) "right"
     -- , RIGHT(col1, 2) + '.' + CAST((ROW_NUMBER() OVER (ORDER BY col1)) AS VARCHAR(2)) fin
     , RIGHT(col1, 2) + '.' + CASE LEFT(col1, 2) WHEN 'xx' THEN '1' WHEN 'xy' THEN '2' ELSE '3' END fin
FROM test

请从网址https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=a1f10444fd50c9c1c541c49d8f23344f检查


推荐阅读