读书人

SQL的like的有关问题

发布时间: 2013-02-24 17:58:56 作者: rapoo

SQL的like的问题
有个字段叫 manIds
列格式是

row1 [1][12][23][34][45][56][56]
row2 [34][56]
row2 [34][45][56]
row2 [34][45]


用一句SLQ查出NAME含[45] 的列
LIKE该怎么写???? 对哦,你这个不是一列里面的数据吗?你要找出:用一句SLQ查出NAME含[45] 的列???是行吧?
[解决办法]

分不开吗?
----------------------------
-- Author :DBA_Huangzj()
-- Date :2013-01-19 14:34:43
-- Version:
-- Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86)
-- Jun 17 2011 00:57:23
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([manIds] varchar(50))
insert [huang]
select '[1][12][23][34][45][56][56]' union ALL
select '[4545]' union ALL
select '[34][56]' union all
select '[34][45][56]' UNION all
select '[34][45]'
--------------开始查询--------------------------



select * from [huang] WHERE CHARINDEX('[45]',manids,1)>0
----------------结果----------------------------
/*
manIds
--------------------------------------------------
[1][12][23][34][45][56][56]
[34][45][56]
[34][45]

(3 行受影响)


*/


[解决办法]
引用:
你这样不行的

分不开 [45]和[4545]
版主的用charindex的语句可以分开[4545]的
用like 的话 要使用ESCAPE关键字定义转义符
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([manIds] varchar(27))
insert [huang]
select '[1][12][23][34][45][56][56]' union all
select '[34][56]' union all
select '[34][4545][56]' union all
select '[34][45]'
--------------开始查询--------------------------

select * from [huang] WHERE manids LIKE '%/[45/]%'escape '/'

----------------结果----------------------------
/*
manIds
---------------------------
[1][12][23][34][45][56][56]
[34][45]

(2 行受影响)

*/

读书人网 >SQL Server

热点推荐