【发布时间】:2015-01-07 09:38:24
【问题描述】:
假设我们在sql中有两个变量
DECLARE @str1 nvarchar(max) = 'FirstName,MiddleName,LastName'
DECLARE @str2 nvarchar(max) = 'John,,Adams'
现在您可以看到第二个变量中第一个逗号后的值是空的,如果发生这种情况,我想从字符串中删除相同的条目。
-- Expected Result Would be
Result of str1 = FirstName,LastName
Result of str2 = 'John,Adams'
注意 可以肯定的是,如果 str1 有 3 个项目,那么 str2 也将有 3 ,不管是空字符串
更新
上面给出的只是一个例子str1 可能有 100 个逗号 str2 将始终具有与 str1 相同数量的逗号。现在我们要做的是,假设我们在 str2 的任何位置(假设 10 或 20 或 32 ....任何地方)有一个空条目,与 str1 的位置相同的项目将被删除。
如果还有人困惑,请告诉我
【问题讨论】:
-
是否有
@str2 = 'John, James,'值或@str2 = ',James,Adams'? -
NO @HansKesting 它永远不会有任何尾随或前导逗号
-
您要解决的实际问题是什么?为什么要在 SQL 中这样做?字符串操作应在客户端或 ETL 期间完成。或者可以通过将 CSV 值转换为表变量并加入它们来解决实际问题
-
@Ancient 我添加了动态答案
-
更好地规范化您的数据,这样您就不必在 TSQL 中进行字符串操作
标签: sql sql-server sql-server-2008