k_s*_*ltz 0 sql sql-server sql-server-2008
我有一个列,我想分成两列,只保留列中的数字.
JU_COUNT1它包含这样的数据
JU_COUNT1
1 BOLT 4 ATTACH
2 BOLT 2 ATTACH
3 BOLT 1 ATTACH
0 BOLT 3 ATTACH
2 BOLT 10 ATTACH
2 BOLT 12 ATTACH
Run Code Online (Sandbox Code Playgroud)
查询运行后,我希望它看起来像这样
BOLT ATTACH
1 4
2 2
3 1
0 3
2 10
2 12
Run Code Online (Sandbox Code Playgroud)
我的SQL查询看起来像
SELECT JU_COUNT1,
CASE
WHEN JU_COUNT1 LIKE '%ATTACH%' THEN RIGHT(JU_COUNT1, Charindex(' ', JU_COUNT1) - 1)
ELSE JU_COUNT1
END AS 'ATTACH1',
CASE
WHEN JU_COUNT1 LIKE '%BOLT%' THEN LEFT(JU_COUNT1, Charindex(' ', JU_COUNT1) - 1)
END AS 'BOLT1'
FROM [dbo].[SUPPORTSTRUCTURE]
Run Code Online (Sandbox Code Playgroud)
我能够很容易地保留BOLT,因为它是BOLT存在时数据的第一部分,但是检索attach的值正在暗示我.
你可以在这里尝试的一个技巧是删除BOLT和ATTACH文本,然后将你想要的数据子串出来:
WITH cte AS (
SELECT
REPLACE(REPLACE(JU_COUNT1, 'BOLT ', ''), ' ATTACH', '') AS JU_COUNT1
FROM [dbo].[SUPPORTSTRUCTURE]
)
SELECT
SUBSTRING(JU_COUNT1, 1, CHARINDEX(' ', JU_COUNT1) - 1) AS BOLT,
SUBSTRING(JU_COUNT1, CHARINDEX(' ', JU_COUNT1) + 1,
LEN(JU_COUNT1) - CHARINDEX(' ', JU_COUNT1)) AS ATTACH
FROM cte;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |