Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 编写脚本以更新nvarchar字段,使其具有分隔符_Sql_Sql Server - Fatal编程技术网

Sql 编写脚本以更新nvarchar字段,使其具有分隔符

Sql 编写脚本以更新nvarchar字段,使其具有分隔符,sql,sql-server,Sql,Sql Server,我似乎对如何着手编写更新脚本感到困惑,并想知道是否有人能帮助我 我有一个字段,其中包含不一致的数据,如下所示: MyField |123|456|789| |789|784|154| 879|487|784 789|754|877 我需要编写一个脚本,在每个字段的开头和结尾添加缺少的|。我还需要确保它不会添加|,如果它已经存在的话 有谁能给我一些帮助吗 我更希望看到您将其规范化,而不是在处理非规范化的分隔列表时给自己带来更多的痛苦,但是更新非常简单 Update SomeTable set M

我似乎对如何着手编写更新脚本感到困惑,并想知道是否有人能帮助我

我有一个字段,其中包含不一致的数据,如下所示:

MyField
|123|456|789|
|789|784|154|
879|487|784
789|754|877
我需要编写一个脚本,在每个字段的
开头和
结尾添加缺少的
|
。我还需要确保它不会添加
|
,如果它已经存在的话


有谁能给我一些帮助吗

我更希望看到您将其规范化,而不是在处理非规范化的分隔列表时给自己带来更多的痛苦,但是更新非常简单

Update SomeTable
set MyField = case when LEFT(MyField, 1) = '|' then '' else '|' end + MyField + case when Right(MyField, 1) = '|' then '' else '|' end

与其强制使用一致的格式,为什么不将其正常化呢?单个交叉点中的多个值违反1NF。或者您可以编写一个脚本,从开始和结束处删除分隔符…@SeanLange-不幸的是,这不是我的模式,我目前必须维护它。我同意,但是,我能做的不多。好的,有时候最好的答案只是最简单的一个。我忘了补充一点,就是有些字段中可能没有任何内容,它们应该保持为空。你能帮我合并这个吗?只需添加一个where子句来删除你不想更新的行。其中MyField>''将消除空值和空字符串。不确定您还需要什么。您也可以这样做。。取决于SQL Server版本<代码>IIF(左(Val,1)‘|’、‘|’、‘)+Val+IIF(右(Val,1)‘|’、‘|’、‘)