请各位指点一下,我现在用concat拼接了一个字符串,想作为查询用字段名。
查询语句是 select * from users where concat('name','01') = 'john' 这种形式的。但是这个语句没法查到name01为'john'的数据。
请问这个有办法实现吗?或者有没有办法查询数据库第多少列的数据呢?
你用高级语言拼接sql语句,不要企图在sql里直接将字符串转列名
name01是字段名称吗?如果是字段名称则修改如下
select * from users where name01 = 'john'
用exec
exec('select * from users where' + concat('name','01') + ' = ''john'' ')
sql中的字符串不能直接作为sql中的表名、列名、操作符等,它就只是一个值而已,
如果需要对字符串赋予其他功能,只能使用存储过程或者函数把字符串当成动态sql执行,或者使用其他语言拼接sql语句去执行。