读书人

SQL语句中文匹配有关问题

发布时间: 2012-10-20 14:12:47 作者: rapoo

SQL语句,中文匹配问题
SQL数据库Article有个字段Exptxt,该字段是txt类型,存储的是一个文章的段落。
现在问题是
我要匹配“因为...所以...”,这个匹配应该是在一个句子里面的,不能跨句子检索
我的思路是,
select * from Article where Exptxt like '%因为(这中间可以是若干个字符,但不可以包含这些'。,!,?')所以%'
应该是要使用正则表达式的。。
哪个高手帮忙写下这个检索语句

[解决办法]

C# code
select * from Article where Exptxt like '%因为%' and like'%所以%'
[解决办法]
如果查询出来,在后台在对返回集合做二次处理应该比较容易一点.
[解决办法]
select * from Article where Exptxt like '%因为%,%.%!%所以%'

[解决办法]
SQL code
DECLARE @s nvarchar(max)SET @s='XXXXXXXXXXXXX。因为香蕉,所以哈密瓜,,,,,。        因为菠萝,所以橘子,,。'--以句号(。)作为每个因为,所以的分隔符DECLARE @splitor varchar(2)SET @splitor='。'DECLARE @tb TABLE(sentence nvarchar(max))WHILE(1=1)  BEGIN    IF CHARINDEX(@splitor, @s) = 0        BREAK;    INSERT INTO @tb  --截取每个句号作为一个sentence,对每个sentence循环处理      SELECT         CASE WHEN SUBSTRING(@s,1, CHARINDEX(@splitor, @s)-1) LIKE '%因为%所以%'             THEN SUBSTRING(@s,1, CHARINDEX(@splitor, @s)-1)            ELSE NULL         END sentence    --将每个sentence替换为空字符串    SET @s = REPLACE(@s, SUBSTRING(@s,1, CHARINDEX(@splitor, @s)), '')  ENDSELECT * FROM @tb---所有 因为所以 分句都包含在@tb表变量中
[解决办法]
SQL Server 也是可以使用正则的,
参考http://blog.csdn.net/maco_wang/article/details/7439560

或者从数据库读出来再匹配
http://www.cnblogs.com/chenxizhang/archive/2011/05/27/2060319.html
[解决办法]
select * from Article where Exptxt like '%因为%所以%' and Exptxt not like '%[!?]%'

读书人网 >C#

热点推荐