sql like 与in用法

IN 操作符IN 操作符允许我们在 WHERE 子句中规定多个值。

SQL IN 语法SELECT column_name(s)FROM table_nameWHERE column_name IN
(value1,value2,…)原始的表 (在实例中使用:)Persons 表:

Id LastName FirstName Address City 1 Adams John Oxford Street London 2
Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing
IN 操作符实例现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM PersonsWHERE LastName IN (‘Adams’,’Carter’)结果集:Id
LastName FirstName Address City 1 Adams John Oxford Street London 3
Carter Thomas Changan Street Beijing

like

LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 操作符语法SELECT column_name(s)FROM table_nameWHERE
column_name LIKE pattern提示:% 可用于定义通配符。
在搜索数据库教程教程中的数据时,您可以使用 SQL 通配符。SQL
通配符在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL
通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符:通配符
描述 % 替代一个或多个字符 _ 仅替代一个字符 [charlist]
字符列中的任何单一字符 [^charlist]或者[!charlist] 不在字

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

澳门新葡亰3522平台游戏,LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE
操作符语法SELECT column_name(s) FROM table_name WHERE column_name
LIKE pattern 原始的表 (用在例子中的):Persons 表: Id LastName FirstName
Address City 1 Adams John Oxford Street London 2 Bush George Fifth
Avenue New York 3 Carter Thomas Changan Street Beijing

LIKE 操作符实例例子 1现在,我们希望从上面的 Persons 表中选取居住在以 N
开始的城市里的人: 我们可以使用下面的 SELECT 语句: SELECT * FROM
Persons WHERE City LIKE ‘N%’ 提示: % 可用于定义通配符。

结果集:Id LastName FirstName Address City 2 Bush George Fifth Avenue
New York

例子 2

接下来,我们希望从 Persons 表中选取居住在以 g 结尾的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE City LIKE ‘%g’

结果集:Id LastName FirstName Address City 3 Carter Thomas Changan
Street Beijing

更多详细内容请查看:mysql教程.htm”>

般情况下我们解决此问题的思路是将传入的字符串用一个split函数来处理,最终处理的结果是一张表,然后将这个表做自查询即可,如下:
复制代码 代码如下:DECLARE @IDs VARCHAR(4000) SET
@IDs=’BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E’
DECLARE @temp TABLE(str VARCHAR(50)) INSERT INTO @temp SELECT * FROM
dbo.Split(@IDs,’,’) SELECT * FROM Orders WHERE OrderGUID IN (SELECT str
FROM @temp)

当然split函数系统比不提供,需要我们自己写: 复制代码 代码如下:CREATE
FUNCTION Split ( @SourceSql varchar(8000), @StrSeprate varchar(10) )
RETURNS @temp TABLE(F1 VARCHAR(100)) AS BEGIN DECLARE @i INT SET
@SourceSql=rtrim(ltrim(@SourceSql)) SET
@i=charindex(@StrSeprate,@SourceSql) WHILE @i=1 BEGIN INSERT @temp
VALUES(left(@SourceSql,@i-1)) SET
@SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) SET
@i=charindex(@StrSeprate,@SourceSql) END IF @SourceSql” INSERT @temp
VALUES(@SourceSql) RETURN END

像这样做非常麻烦,而且还需要借助函数来实现,下面介绍一种简单的方法,因为GUID是唯一的,所以在上面的例子中可以使用LIKE来代替IN也可以达到同样的查询效果:
复制代码 代码如下:SELECT * FROM Orders WHERE
‘BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E’
LIKE ‘%’+convert(VARCHAR(40),OrderGUID)+’%’