jos*_*123 1 t-sql sql-server while-loop
我正在使用 while 循环遍历一些表并对字段执行替换,以删除所有连字符。所有字段都是 varchar。
DECLARE @Table TABLE (TableName VARCHAR(max),Id int identity(1,1))
INSERT INTO @Table
Select distinct table_name From INFORMATION_SCHEMA.COLUMNS
DECLARE @max int
DECLARE @SQL VARCHAR(max)
DECLARE @TableName VARCHAR(max)
DECLARE @id int = 1
select @max = MAX(Id) from @Table
WHILE (@id <= @max)
BEGIN
SELECT @TableName = TableName FROM @Table WHERE Id = @id
SET @SQL = 'update '+ @TableName +' set colA = replace(colA,'-','');'
EXEC(@SQL)
SET @id = @id +1
END
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
数据类型 varchar(max) 和 varchar 在减法运算符中不兼容。
我尝试将 varchar 变量更改为固定长度或全部更改为最大值,但似乎没有任何效果。
在字符串中创建单引号时需要使用两个单引号:
DECLARE @Table TABLE (TableName VARCHAR(max),Id int identity(1,1))
INSERT INTO @Table
Select distinct table_name From INFORMATION_SCHEMA.COLUMNS
DECLARE @max int
DECLARE @SQL VARCHAR(max)
DECLARE @TableName VARCHAR(max)
DECLARE @id int = 1
select @max = MAX(Id) from @Table
WHILE (@id <= @max)
BEGIN
SELECT @TableName = TableName FROM @Table WHERE Id = @id
SET @SQL = 'update '+ @TableName +' set colA = replace(colA,''-'','''');'
EXEC(@SQL)
SET @id = @id +1
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3241 次 |
最近记录: |