sql常识性误解

  今天在公司一个项目,遇到一个问题,最后解决下来竟然发现自己对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

至于条件的写的方式并无要求

原文地址:https://www.cnblogs.com/zhang888/p/sqlerror.html