我遇到了一种情况,其中 SQL 数据库中的列名是 [列名],我正在尝试按该列更新它。
选择很简单:从 MyDatabase 中选择 [列名]。
我正在尝试这样做(参数化): UPDATE MyDatabase WHERE [column name] = @[column name]
错误说: 列名不存在:@column
我不能只更改数据库中的名称,因为它已经存在了一段时间,而且很可能会破坏一堆东西。
感谢大家的帮助!
戴夫
我遇到了一种情况,其中 SQL 数据库中的列名是 [列名],我正在尝试按该列更新它。
选择很简单:从 MyDatabase 中选择 [列名]。
我正在尝试这样做(参数化): UPDATE MyDatabase WHERE [column name] = @[column name]
错误说: 列名不存在:@column
我不能只更改数据库中的名称,因为它已经存在了一段时间,而且很可能会破坏一堆东西。
感谢大家的帮助!
戴夫
参数名不必与列名匹配。(实际上,它不能有空格)只需将参数名称更改为不包含空格即可。
UPDATE MyDatabase WHERE [column name] = @columnname
参数/变量中不能有空格。但话又说回来,它们不必匹配列名。
你可以有类似的东西
UPDATE MyDatabase WHERE [column name] = @column_name
根据http://technet.microsoft.com/en-us/library/ms176027(v=sql.105).aspx:
Microsoft SQL Server 无法识别带分隔符的变量名称和存储过程参数。这些类型的标识符必须符合常规标识符的规则。
这意味着您不能@[variable name]
在代码中使用。你必须凑合着用@variable_name
或类似的。
UPDATE MyTable WHERE [column name] = @this_is_parameter_name