【发布时间】:2018-04-09 09:51:07
【问题描述】:
我想在表中拆分或“修剪”我的 SQL-Server 中的字段(名称)...但是我在每种尝试的方式中都遇到了错误。
我个人 Better way 声明的示例错误代码:
未找到 SingleWords 列或用户定义的聚合“SingleWords.value”,或者名称不明确。
例如:
我有一个名为:“名称”的字段。此字段包括名字和姓氏(以 CR/LF 或空格分隔)。
对于我的声明,我需要将名称拆分为两个不同的字段..但我只想使用 SQL-Management Studio..
这可能吗?
我的 SQL 兼容级别为“130”...
我尝试了以下语句作为示例:
SELECT NAME FROM dbo.CRM_IM_X STRING_SPLIT(Name, CHAR(13)+CHAR(10)) WHERE RTRIM(NAME) <> '';
或者(我个人更好的方法):
SELECT CAST('<x>' + REPLACE(NAME,CHAR(13)+CHAR(10),'</x><x>') + '</x>' AS XML) AS SingleWords
FROM dbo.CRM_IM_X
SELECT SingleWords.value('x[1]','varchar(max)') AS part1
,SingleWords.value('x[2]','varchar(max)') AS part2
FROM dbo.CRM_IM_X
名字的第 1 部分,
姓氏的第 2 部分,
对于 CR/LF,CHAR(13)+CHAR(10)。
样本数据输入:
DECLARE @tbl TABLE(NAME VARCHAR(100));
INSERT INTO @tbl VALUES('Jane
Doe'),('John
Doe');
但我被困在将这 2 个 Select-Statements 组合在一起......
【问题讨论】:
-
请标记您的 SQL Server 版本。
-
请提供样本数据和输出
-
不要为 SQL Server 问题标记 MySQL,它们不是同一个 RDBMS。
-
另一种说法,你说你有“错误”。请问你能edit你的帖子并包括它们吗?
-
只看你的样本数据,第一个问题是你有一个人有头衔,然后第二个没有头衔。这立即带来了问题。这是否意味着您还可以具有以下值?
Mr Smith,Mr George W Bush,除非您的数据具有一致性,否则您将无法实现这一目标。如果你不能做出安全的假设,那么你会得到错误的结果。
标签: sql tsql case sql-server-2017