将一列中的值拆分为两列

时间:2011-09-26 21:08:33

标签: sql-server tsql

我在SQL中有一个列,我想在select(分隔符)上将列拆分为两列。例如,该表目前具有:

---------
Mary - 16

我希望查询结果有两列:

--------   --------
Mary       16

感谢您的帮助。

2 个答案:

答案 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更改为查询中的字段名称即可。