今天在公司一个项目,遇到一个问题,最后解决下来竟然发现自己对sql竟然存在一个常识性的误解
表数据
需求如下 查找 name中的数据被参数 'adsb' 包含的的列
个人原先的误区一直在于一个认识,
认为在sql查询中where 条件后只有 列名=参数的情况
所以
sql语句一直想的结构是
SELECT [userGid] ,[detail] ,[Type] ,[source] ,[createTime] ,[name] FROM [dbo].[showy] where name like '%adsb%'
即where后列名 like参数的情况
因为需求是要参数包含列名,所以该语句根本行不通
而正确语句为
SELECT [userGid] ,[detail] ,[Type] ,[source] ,[createTime] ,[name] FROM [dbo].[showy] where 'adsb' like '%' +name+'%'
即where后参数 like 列名的情况
误区遍在个人一直认为where后的条件只能是列名在前边然后与参数做判断
其实 sql中 对列是否出线的标准是where后的整体条件是否为true
至于条件的写的方式并无要求