手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mssql>列表

sql数据的like查询条件

来源:互联网 作者:west263.com 时间:2008-04-02
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
USE pubs



GO



CREATE PROCEDURE find_books2 @au_lname varchar(20)



AS



SELECT t.title_id, t.title 



FROM authors a, titleauthor ta, titles t



WHERE a.au_id = ta.au_id AND ta.title_id = t.title_id



   AND a.au_lname LIKE @au_lname   '%'



EXEC find_books2 'ring'



下面是结果集:wwww.chin aitpower.comIqpmA

title_id title                                                                            



-------- ---------------------------------------------------------------



MC3021   The Gourmet Microwave                                                            



PS2091   Is Anger the Enemy?                                                              



PS2091   Is Anger the Enemy?                                                              



PS2106   Life Without Fear                                                                



(4 row(s) affected)



使用 LIKE 的模式匹配

当搜索 datetime 值时,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。例如,假如将值 19981231 9:20 插入到名为 arrival_time 的列中,则子句 WHERE arrival_time = 9:20 将无法找到 9:20 字符串的精确匹配,因为 SQL Server 将其转换为 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%' 将找到匹配。wwww.chin aitpower.comIqpmA

LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。当任何参数,包括 match_expressionpattern escape_character(假如有)都是 ASCII 字符数据类型时,将执行 ASCII 模式匹配。假如其中任何参数属于 Unicode 数据类型,则任何参数将被转换为 Unicode 并执行 Unicode 模式匹配。当对 Unicode 数据(nchar nvarchar 数据类型)使用 LIKE 时,尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。Unicode LIKE 和 SQL-92 标准兼容。ASCII LIKE 和 SQL Server 的早期版本兼容。wwww.chin aitpower.comIqpmA

下面的一系列示例显示 ASCII LIKE 模式匹配和 Unicode LIKE 模式匹配所返回的行之间的差异:wwww.chin aitpower.comIqpmA

-- ASCII pattern matching with char column



CREATE TABLE t (col1 char(30))



INSERT INTO t VALUES ('Robert King')



SELECT * 



FROM t 



WHERE col1 LIKE '% King'   -- returns 1 row



-- Unicode pattern matching with nchar column



CREATE TABLE t (col1 nchar(30))



INSERT INTO t VALUES ('Robert King')



SELECT * 



FROM t 



WHERE col1 LIKE '% King'   -- no rows returned



-- Unicode pattern matching with nchar column and RTRIM



CREATE TABLE t (col1 nchar (30))



INSERT INTO t VALUES ('Robert King')



SELECT * 



FROM t 



WHERE RTRIM(col1) LIKE '% King'   -- returns 1 row



使用 % 通配符

假如指定 LIKE '5%',SQL Server 将搜索后面带有零个或多个任意字符的数字 5。 wwww.chin aitpower.comIqpmA

例如,此查询将显示数据库中任何的系统表,因为他们都以字母 sys 开始:wwww.chin aitpower.comIqpmA

SELECT TABLE_NAME



FROM INFORMATION_SCHEMA.TABLES



WHERE TABLE_NAME LIKE 'sys%'



若要查阅非系统表的任何对象,请使用 NOT LIKE 'sys%'。假如共有 32 个对象且 LIKE 找到 13 个和模式匹配的名称,则 NOT LIKE 将找到 19 个和 LIKE 模式不匹配的对象。wwww.chin aitpower.comIqpmA

使用 LIKE '[^s][^y][^s]%' 模式不一定每次找到的名称都相同。可能仅得到 14 个名称(而不是 19 个),除了系统表名称外,任何以 s 开始或第二个字母为 y 或第三个字母为 s 的名称也都将从结果中消除。这是因为用反向通配符匹配字符串是分步骤进行计算的,一次一个通配符。假如在计算过程中任一环节匹配失败,那么就会将其消除。wwww.chin aitpower.comIqpmA

将通配符作为文字使用

能够将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。wwww.chin aitpower.comIqpmA

符号 含义
LIKE '5[%]' 5%
LIKE '[_]n' _n
LIKE '[a-cdf]' a、b、c、d 或 f
LIKE '[-acdf]' -、a、c、d 或 f
LIKE '[ [ ]' [
LIKE ']' ]
LIKE 'abc[_]d%' abc_d 和 abc_de
LIKE 'abc[def]' abcd、abce 和 abcf

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!