如何在T-SQL中声明变量并在update语句中使用它

时间:2014-07-04 06:06:44

标签: sql-server-2008

SQL脚本新手,尝试使用如下所示的define变量更新SQL脚本中的部分字符串,但无法使其工作。该列可以像\\OM-WD08-1\TestDoc\report\rep.pdf一样,有很多表用不同的列标题来更新。我想声明变量并替换适用的地方。提前谢谢

USE MyServer

-- Declare the variable to be used.
DECLARE @OldPath varchar(30), @NewPath varchar(30)

-- Initialize the variable
SET @OldPath ='\\OM-WD08-1\';
SET @NewPath ='\\AA-PC\';

UPDATE AnatomyConfigs
SET Path = REPLACE(Path, @OldPath, @NewPath) 
WHERE Path IS NOT NULL
  AND Path LIKE @OldPath
GO

2 个答案:

答案 0 :(得分:1)

LIKE仅执行文字的文字匹配,除非您包含某种形式的通配符(%_)。我会这样做:

USE MyServer

-- Declare the variable to be used.

DECLARE @OldPath varchar(30), @NewPath varchar(30)

-- Initialize the variable
SET @OldPath ='\\OM-WD08-1\';
SET @NewPath ='\\AA-PC\';

UPDATE AnatomyConfigs
    SET Path = @NewPath + SUBSTRING(Path,LEN(@OldPath)+1,8000)
WHERE Path LIKE @OldPath + '%'
GO

我更喜欢使用SUBSTRING而不是REPLACE,因为它更清晰地反映了#34;我只想替换字符串开头的实例"。现在,考虑到中间没有路径应该包含\\,在这个特定情况下并不是真的需要这个,但是我想要更一般的答案。

答案 1 :(得分:0)

Declare @varibale_name varhcar(50)
To set Value:
set @variable_name='dgnughg'

update Table_Name set column_name=@variable_name