EF - linq (whole word )查询


whole word 查询

where'$'+ts.TargetSegment+'$' LIKE '%[^a-z0-9]a[^a-z0-9]%'

charindex 解释#

CHARINDEX ( expression1 , expression2 [ , start_location ] )

   Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

   CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么函数整数“0”。

1 查找左右是空格与自己#


LINQ 写法

segmentsProjectTaskSQL.Where(t =>
                           t.ts.TargetSegment == searchTarget
                           || (t.ts.TargetSegment.Contains(" " + searchTarget + " ")
                              || t.ts.TargetSegment.StartsWith(searchTarget + " ")
                              || t.ts.TargetSegment.EndsWith(" " + searchTarget))
                           );

生成的SQL

and (( CAST(charindex(N' '+'a'+' ', ts.TargetSegment) AS int)) > 0 or ts.TargetSegment = 'a')

2 查找左右是符号,空格与自己#

charindex不支持通配符,所以使用 patindex

var query = db.Products
    .Where( p => SqlFunctions.PatIndex("%[^a-z0-9]a[^a-z0-9]%", "$"+ts.TargetSegment+"$") > 0  );

生成SQL

and (( CAST(patindex(N'%[^a-z0-9]a[^a-z0-9]%', '$' +ts.TargetSegment+'$') AS int)) > 0 or ts.TargetSegment = 'a')

参考#

Linq:SqlFunctions.PatIndex与string.包含字符串比较

作者:【唐】三三

出处:https://www.cnblogs.com/tangge/p/16347643.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   【唐】三三  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2018-06-06 【专栏学习】APM——异步编程模型(.NET不推荐)
2016-06-06 数据结构和算法 – 10.集合
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示