【发布时间】:2016-01-20 02:26:34
【问题描述】:
我正在使用 SQL Server 2008。假设以下列为例。
column1
cjd.001 306.1
cjd.001 306.2
cjd.001 306.R
现在我想替换所有的 '.'和 '-'。但只是从第一个字符串开始,即在空格之前或 8 个字符以下。其余字段应保持不变。
SampleOutput
cjd-001 306.1
cjd-001 306.2
cjd-001 306.R
我尝试了以下查询,但它替换了所有“。”。
UPDATE dbo.table
SET column1 = REPLACE(column1, '.', '-')
我想知道我可以在 where 子句中使用什么? 尝试使用子字符串函数,但没有成功。
【问题讨论】:
-
显然你必须将你的字符串分成两部分并且只改变第一部分。因此,首先尝试找到拆分字符串的位置。然后相应地使用 SUBSTRING,然后 REPLACE,然后再次将两个部分粘合在一起。
-
在您最终替换的第四个位置是否总是一个字符?和你的示例数据一样?
-
第 1 位是否可以出现空格,如果出现,是否应该完全阻止替换,或者是否应该忽略甚至删除?
-
没有马丁'。'可能发生在任何地方。但我只想替换第一个空格之前发生的那些
-
第一个位置 Throsten 不会出现空格。您能帮我解决拆分字符串的查询示例吗?
标签: sql sql-server sql-server-2008 sql-update substring