求教sql server 可以把列名当做变量吗?
我有一个表,字段名是1,2,3,4,5,我想依次更新,怎么办,能不能updatetbset列变量='字符串',列变量++,这样实现?不能的话,要怎么实现?...
我有一个表,字段名是1,2,3,4,5,我想依次更新,怎么办,能不能update tb set 列变量='字符串',列变量++,这样实现?不能的话,要怎么实现?
展开
2个回答
展开全部
不可以,列名、表名都不能用变量,可以通过拼接字符,然后用exec来执行
如,exec('update tb set '+列名变量+'='''+字符类的变量值+''' where 条件')
如,exec('update tb set '+列名变量+'='''+字符类的变量值+''' where 条件')
更多追问追答
追问
列名变量+'='''为什么这里要有三个单引号?
追答
如果想输出一个单引号的字符,需要四个单引号,也就是在一对单引号内部,要表达一个单引号要用两个代表,拼接字符的时候,如果是字符的字段值,需要额外拼接两边的单引号,不然拼接后的结果会是列=值,而不是列='值'这样的效果
然后忘记说了,如果你的列名不是标准命名,那么需要用中括号括起来,所以要把中括号拼接进字符中,或者用QUOTENAME()函数,这个函数会自动给字符加上两端的中括号的
更改一下上面的代码
exec('update tb set '+QUOTENAME(列名变量)+'='''+字符类的变量值+''' where 条件')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询