exec(' select distinct * from (select OrganiseUnitID,OrganiseUnitCode,ShortName,ParentOrganiseUnitID, OrganiseUnitType,OrganiseUnitModel,FullName from SDMS_OrganiseUnit where isDelete=0 and OrganiseUnitCode like '''+@OrganiseUnitCode+'%'' or '+@JoinCompanyCode+') t')
给我讲解一下sql,尤其是单引号的作用,
单引号在这个里面有两个意思,一个是用来标识字符串,另一个是转义字符。
比如 '……like '''+@OrganiseUnitCode+'%''……',如果@OrganiseUnitCode设置的值是'abc',那么拼接出来的字符串就是[……like 'abc%'……]
单引号就是标识字符串,没什么作用
我怎么感觉单引号那一块错了呢
sql的大体意思是:从 SDMS_OrganiseUnit表中 查出OrganiseUnitID,OrganiseUnitCode,ShortName,ParentOrganiseUnitID,OrganiseUnitType,OrganiseUnitModel,FullName这些字段 条件是 isDelete=0 并且 OrganiseUnitCode的内容 是以@OrganiseUnitCode开头的 或者 @OrganiseUnitCode 然后去重复
sql处理过程:
1)select OrganiseUnitID,OrganiseUnitCode,ShortName,ParentOrganiseUnitID, OrganiseUnitType,OrganiseUnitModel,FullName from SDMS_OrganiseUnit where isDelete=0 and OrganiseUnitCode like '''+@OrganiseUnitCode+'%'' or '+@JoinCompanyCode+'
这句是将符合查询条件的搜索结果聚合
2)select distinct * from ( 1过程的搜索结果 ) t
这句话是将搜索结果去重复
like ''' 后面跟的不是单引号,而是在执行字符串的拼接,将外部参数@OrganiseUnitCode引入到sql语句中,后面的+@JoinCompanyCode+ 也是把外部参数值拼接到要执行的sql字符串中
自己看相关的数据库原理的书籍。关于select 的用法
推荐去看看SQL的语法,做开发SQL是必须会的
楼主就是前几天问单引号那个人吗?
执行括号里面的SQL语句(查找SDMS_OrganiseUnit,并去掉重复项)
其实单引号就是@OrganiseUnitCode,@JoinCompanyCode 传入的可能是字符串类型,需要用单引号括起来.