我在SQL中有一个列,我想在select(分隔符)上将列拆分为两列。例如,该表目前具有:
---------
Mary - 16
我希望查询结果有两列:
-------- --------
Mary 16
感谢您的帮助。
答案 0 :(得分:5)
SELECT
left_side = RTRIM(SUBSTRING(col, 1, CHARINDEX('->', col)-2)),
right_side = LTRIM(SUBSTRING(col, CHARINDEX('->', col) + 2, 4000))
FROM dbo.table;
啊,我明白了。 |
个字符是列说明符,不是输出的一部分。尝试:
SELECT
left_side = LTRIM(RTRIM(SUBSTRING(col, 1, CHARINDEX('-', col)-1))),
right_side = LTRIM(RTRIM(SUBSTRING(col, CHARINDEX('-', col) + 1, 4000)))
FROM dbo.table;
答案 1 :(得分:1)
如果你不担心边缘情况,这样的事情会起作用:
Declare @Var varchar(200)
SET @Var = 'Mary - 16'
SELECT LEFT(@Var, PATINDEX('%-%', @Var) - 1), Right(@Var, LEN(@Var) - PATINDEX('%-%', @Var))
只需将@Var更改为查询中的字段名称即可。