gpt4 book ai didi

sql-server-2008 - Like operator on full lengths string in sql server 2008

转载 作者:行者123 更新时间:2023-12-02 05:18:03 25 4
gpt4 key购买 nike

在下面需要帮助。

我正在使用 sql seerver 2008 并有一个查询,我在其中使用 like 运算符。当我使用字符串的一部分时它工作正常但是当我在类似运算符数据库中使用完整字符串时不会填充任何结果。

例如。我有包含描述列的表 EMp。如果描述列包含

Description
-------------------------------------------------
'John joined on Wednesday/CELL PHONE [1234567890]'

当我写查询时

select * from EMp where 
description like '%CELL%'

工作正常然而,当我将查询写为

select * from EMp where 
description like '%John joined on Wednesday/CELL PHONE [1234567890]%'

它不返回任何值。

这是否意味着 like 运算符仅适用于字符串的一部分而不适用于整个字符串。我还尝试了 LTRIM 和 RTRIM 只是为了确保空间不是问题,但它不起作用。

谢谢

最佳答案

请记住,除了通配符 % 之外,LIKE 还支持一组有限的模式匹配。其中一种模式包括用于匹配范围的括号。

参见:http://msdn.microsoft.com/en-us/library/ms179859.aspx

查询中的括号将导致它搜索“指定范围 ([a-f]) 或集合 ([abcdef]) 内的任何单个字符。”

description like '%John joined on Wednesday/CELL PHONE [1234567890]%'

因此,您的查询要求 SQL Server 在集合 [1234567890] 中查找一个字符。

如果您通读 MSDN documentation ,它提供了将通配符用作文字的指南。这是一个小例子:

DECLARE @table TABLE ( SomeText VARCHAR( 100 ) );
INSERT @table ( SomeText ) VALUES ( 'here is a string with [brackets]' );

-- matches with wildcards on both sides of the pattern
SELECT * FROM @table WHERE SomeText LIKE '%[brackets]%';

-- won't match
SELECT * FROM @table WHERE SomeText LIKE '%here is a string with [brackets]%';

-- matches, because expression is escaped
SELECT * FROM @table WHERE SomeText LIKE '%here is a string with [[brackets]%';

-- a confusing (but valid) escape sequence AND a wildcard
SELECT * FROM @table WHERE SomeText LIKE '%here is a string with [[][a-z]rackets]%';

请注意,如果您想搜索具有更复杂模式的更大字符串,全文索引可能更有用。 SQL Server 2008 的所有版本(甚至 Express)都支持它。

关于sql-server-2008 - Like operator on full lengths string in sql server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14314242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com