寂井浮廊
打赏我
欢迎您: 
游客
   
登录
  发现BUG请联系jintianhu2000@126.com
常用
加解密算法
常用工具
EMV相关
还珠楼论坛
答题闯关
用户信息
帖子列表
语法介绍
帖子详情
C# SQL查询LIKE模糊查询与转义
jin.th 发布于2018-11-01 15:40
[评论区]
[我要回复]
[下载md文件]
[下载pdf文件]
仅自己可见
# LIKE模糊查询 ### Sqlserver ```sql SELECT * FROM XXX WHERE [Name] LIKE '%'+@KeyWord + '%' ``` ### Sqlite ```sql SELECT * FROM XXX WHERE [Name] LIKE @KeyWord" SQLiteParameter p=new SQLiteParameter("@KeyWord","%"+keyword+"%") ``` # LIKE转义字符 ### Sqlserver ```csharp str = str.Replace("[", "[[]"); str = str.Replace("_", "[_]"); str = str.Replace("%", "[%]"); ``` ### Sqlite 第一步,先替换特殊字符 ```csharp / -> // ' -> ''(这个只在拼接SQL字符串时用,如果用参数式传参就不需要) [ -> /[ ] -> /] % -> /% & -> /& _ -> /_ ( -> /( ) -> /) ``` 第二步,用escape定义转义字符。比如 ```sql SELECT * FROM [XXX] WHERE [Name] LIKE '%/%%' escape '/' ``` 关键字 ESCAPE允许确定一个转义字符,告诉数据库紧跟在转义字符之后的字符看作是实际值。 # 逗号分隔的字段 逗号,在sql中like中不需要转义,但是如果 在sql中的某个字段值用“,”分隔数据, 需要获取数据的时候直接把“,”拆分成数据,获得一个数据的list。 例如:需要查询某字段是否包含一个值, 111是否存在于1111,2111,1112,1121,1113这个字段中 。 因为根据“,”逗号分开,要求的答案是:不在字段中。 用传统的like '%111%',显然不合适,这样虽然111不存在但是依然能查到该条记录。 所以应该用以下语句实现: `select * from Table where ','+columA+',' like '%,111,%'` 实际就是把字段填上一个逗号然后在比较。如果你的字段是用别的分隔符,同理可得。
评论列表
回帖
浙ICP备17051204号