SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
206 个问题
我有个列存储的值如下:AAA.BBB.CCC ,DDD.EEE
在使用substring之后,我想要AAA和DDD在同一列,CCC和EEE同一列,DDD.EEE的中间固定为空值。
如图:
如何通过查询语句实现?
如果你的数据中只有AAA.BBB.CCC ,DDD.EEE这两种格式的数据的话,那么你可以尝试下面这个语句:
DECLARE @TBL TABLE(ID INT, [VALUE] VARCHAR(50))
INSERT INTO @TBL VALUES
(1,'AAA.BBB.CCC'),(2,'DDD.EEE')
;WITH CTE AS
(
SELECT [VALUE],
PARSENAME([VALUE], 3) AS VALUE1,
PARSENAME([VALUE], 2) AS VALUE2,
PARSENAME([VALUE], 1) AS VALUE3
FROM @TBL
)
SELECT CASE WHEN VALUE1 IS NULL THEN VALUE2 ELSE VALUE1 END AS VALUE1,
CASE WHEN VALUE1 IS NULL THEN NULL ELSE VALUE2 END AS VALUE2,
VALUE3
FROM CTE
如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。