其实,以前有类似如下的表结构:NAME INPUTCODE1 INPUTCODE2 INPUTCODE3
==================================
大白菜 dbc bc 101
西红柿 bhs YSZ 102
黄瓜 hg
青椒 qj lj 那么当按“b”为关键字检索时,构造的SELECT语句是:
select name from table1 where inputcode1 like 'b%' or inputcode2 like 'b%' or inputcode3 like 'b%'现在因为没有办法修改表结构,只好把原来的三个字段合并为一个字段处理,但是不知道该如何检索。请指教,谢谢了先。
==================================
大白菜 dbc bc 101
西红柿 bhs YSZ 102
黄瓜 hg
青椒 qj lj 那么当按“b”为关键字检索时,构造的SELECT语句是:
select name from table1 where inputcode1 like 'b%' or inputcode2 like 'b%' or inputcode3 like 'b%'现在因为没有办法修改表结构,只好把原来的三个字段合并为一个字段处理,但是不知道该如何检索。请指教,谢谢了先。
解决方案 »
- SQL语句as后,怎么直接使用这个列?
- 这两种SQL语句的执行效率差在哪里?
- 请问哪里有比较好的安装包制作程序下载?
- 急,怎样立刻创建一个新的数据表,与现有的数据表一样,
- SQL2005 如何将行转换成列
- 关于sqlserver循环插入和循环更新操作
- 怎样将从select * from opensource的数据插入到现在已经存在的表中,而不是新建表。谢谢
- 以下程序错在哪里?
- 请问这个SQL语句问题处在哪儿啊?
- sqlserver中-登录名和用户名的区别
- 用DTS包定时导入同一文本数据到SQLServer2000时,如何避免数据重复???
- w2k3下用xp_cmdshell 访问不到网络映射盘,如何解决
select * from opr.gbcodes where patindex('%b%', inputcode)<>0不知道有没有其它的办法?
where charindex(',b',','+inputcode)>0
where charindex('b',left(INPUTCODE,charindex(',',INPUTCODE)-1))<>0
按照wgsasd311的方法测试通过;lsqkeke,你这个LEFT函数好像有点问题了,提示“向 substring 函数传递了无效的 length 参数”了。
insert @t
select '大白菜', 'dbc,bc,101 ' union all
select '西红柿', 'bhs,YSZ,102' union all
select '黄瓜', 'hg,,' union all
select '青椒', 'qj,,lj'
select * from @t
where charindex('b',left(INPUTCODE,charindex(',',INPUTCODE)-1))<>0结果:
大白菜 dbc,bc,101
西红柿 bhs,YSZ,102
insert @t
select '大白菜', 'dac,bc,101 ' union all
select '西红柿', 'bhs,YSZ,102' union all
select '黄瓜', 'hg,,' union all
select '青椒', 'qj,,lj'
select * from @t
where charindex('b', left(INPUTCODE, charindex(',', INPUTCODE)-1))<>0
=====
lsqkeke,你这个检索,只是对第一个“,”分隔号前的内容进行了检索;比如我修改成上面的测试数据后,就没有检索出【'大白菜', 'dac,bc,101'】这条记录来。
-----------------------------
你这句话的说明有歧义,所以我理解成:只是第一部分并且以b开头的