sql-server - 使用条件遍历列
问题描述
我目前正在尝试遍历标题为“Switch 1, Switch 2, ....”的 38 列,以便根据条件更新它们。
这是我的代码:
DECLARE @i int
DECLARE @selec nvarchar(max)
SET @i = 1
WHILE @ i <= 38
BEGIN
SET @selec = 'UPDATE 'Catalog v4'' + '
SET 'Switch' + LTRIM(STR(@i+1)) = ' + CASE
WHEN ( 'Switch' + LTRIM(STR(@i+1))= [Switch Check String] ) THEN ( '' )
ELSE ( 'Switch' + LTRIM(STR(@i+1)))
SET @i = @i+1
EXEC(@selec)
END
我不断收到错误
必须声明标量变量@,Recipe 附近的语法不正确
任何帮助将不胜感激,谢谢!
解决方案
假设您正在尝试更新表 [目录 4],以下可能会有所帮助:
DECLARE @i int
DECLARE @selec nvarchar(max)
SET @i = 1
WHILE @i <= 38
BEGIN
SET @selec = 'UPDATE '+QUOTENAME('Catalog v4')+'
SET '+QUOTENAME('Switch ' + LTRIM(STR(@i+1)))+' = CASE
WHEN ('+QUOTENAME('Switch '+ LTRIM(STR(@i+1)))+' = ''[Switch Check String]'' ) THEN ( '''' )
ELSE ('+QUOTENAME('Switch ' + LTRIM(STR(@i+1)))+') END'
PRINT @selec --please check the printed messages before executing those.
SET @i = @i+1
--EXEC(@selec)
END
Quotename
如果其中有空格,则有助于正确定义对象名称。- 请相应地替换[开关检查字符串]。
推荐阅读
- python - 如何将音频文件中的python输入中的语音转换为文本
- c# - 如何将动态生成的文本框绑定到 WPF 中的 DataGrid 值?
- react-native - 如何在 react-native 中将数据发送到另一个组件
- excel - 大文件上Excel VBA中的慢代码,如何使其更快?
- android - Java android在Edittext中自动调整文本大小
- fortran - 错误:格式字符串中的 P 描述符后需要逗号
- html - 如何使用 Golang 检索所选 HTML 元素的高度?
- java - JavaFX 和 Mapsforge
- bash - 循环遍历 Bash 中的数组
- c - ICMP 数据包中的 TTL 不变