Sql server 将一列中的值拆分为两列
我在SQL中有一列,我想在select上将一列拆分为两列(通过分隔符)。例如,该表当前有:Sql server 将一列中的值拆分为两列,sql-server,tsql,Sql Server,Tsql,我在SQL中有一列,我想在select上将一列拆分为两列(通过分隔符)。例如,该表当前有: --------- Mary - 16 我想要两列作为查询的结果: -------- -------- Mary 16 谢谢你的帮助 SELECT left_side = RTRIM(SUBSTRING(col, 1, CHARINDEX('->', col)-2)), right_side = LTRIM(SUBSTRING(col, CHARINDEX('->
---------
Mary - 16
我想要两列作为查询的结果:
-------- --------
Mary 16
谢谢你的帮助
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;
如果您不担心边缘情况,那么类似的方法将起作用:
Declare @Var varchar(200)
SET @Var = 'Mary - 16'
SELECT LEFT(@Var, PATINDEX('%-%', @Var) - 1), Right(@Var, LEN(@Var) - PATINDEX('%-%', @Var))
只需在查询中将@Var更改为您的字段名。不是完全相同的字段名,但如果您指明正在使用的sql server版本以及所使用的分隔符,则查找[[sql server]split]()通常很有用。我假设
->
,但请明确。+1,但我认为->
应该是一个箭头,显示所需的结果,分隔符应该是“-”@Lamak谢谢,我对问题进行了编辑以使其更清楚。我认为|
和->
是数据的一部分。