我想根据几个关键字模糊查询[公司名],比如带有'北京','福建','山东'这帮个词的的公司都查出来,有点像百度谷歌那样的,但关键字数量不定,
我想到的办法是根据关键字数量动态生成Where那段内容,比如:
select * from companyInfor where name like '%北京%' or name like '%福建%' or name like '%山东%'
不知是否还有更方便的办法呢?谢谢!
我想到的办法是根据关键字数量动态生成Where那段内容,比如:
select * from companyInfor where name like '%北京%' or name like '%福建%' or name like '%山东%'
不知是否还有更方便的办法呢?谢谢!
--这样?
select * from companyInfor where name like '%[北京福建山东]%'
select * from companyInfor where name CHARINDEX(','+name+',' ,','+'北京,福建,山东'+',')>0
第 1 行: 'CHARINDEX' 附近有语法错误。
select * from companyInfor where CHARINDEX(','+name+',' ,',北京,福建,山东,')>0
(
@company varchar(100)=null)
as
begin
select * from companyInfor where name like '%@company%'
return -1
end
go
然后从前台传参数调用储存过程,行不行?
弄懂了,你的NAME是CHAR类型是不是????我刚才设成CHAR类型的也不行,因为固定了!!
CREATE TABLE TBTEST(COMPANYNAME CHAR(10),STATE VARCHAR(10))
INSERT TBTEST
SELECT 'AAAAARE','北京'UNION ALL
SELECT 'bbbFDEb','上海'UNION ALL
SELECT 'AAACCCAA','福建'UNION ALL
SELECT 'AADDDAAA','山东'
DROP TABLE TBTEST
select * from TBTEST where CHARINDEX(','+STATE+',' ,',北京,福建,山东,')>0 COMPANYNAME STATE
----------- ----------
AAAAARE 北京
AAACCCAA 福建
AADDDAAA 山东(所影响的行数为 3 行)
这样一定行了
CREATE TABLE TBTEST(COMPANYNAME CHAR(10),STATE CHAR(10))
INSERT TBTEST
SELECT 'AAAAARE','北京'UNION ALL
SELECT 'bbbFDEb','上海'UNION ALL
SELECT 'AAACCCAA','福建'UNION ALL
SELECT 'AADDDAAA','山东'select * from TBTEST where CHARINDEX(','+rtrim(ltrim(STATE))+',' ,','+'北京,福建,山东'+',')>0
COMPANYNAME STATE
----------- ----------
AAAAARE 北京
AAACCCAA 福建
AADDDAAA 山东 (所影响的行数为 3 行)
那只能是按你的了,呵呵!!!LIKE