更新语句以更新列长

时间:2015-10-21 07:30:12

标签: sql sql-server sql-server-2008 sql-update substring

我正在使用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子句中我可以使用什么? 尝试使用子串函数,但它没有工作。

1 个答案:

答案 0 :(得分:2)

我认为你需要一个像这样的SQL:

UPDATE yourTable
SET column1 = REPLACE(SUBSTRING(column1, 1, CHARINDEX(' ', column1)), '.', '-')
            + SUBSTRING(column1, CHARINDEX(' ', column1) + 1, LEN(column1));

[SQL Fiddle Demo]