select col1 from tb1 where col1 like '[6-9]+%' or col1 like '1[0-3]+%'
但我要从15-37的呢,, 哪不是要构造很多吗? 如col1 like '1[5-9]+%' or col1 like '2[0-9]+%' or col1 like'3[0-7]'
也可以试试我的,不过楼上的比较好 SELECT COL1 FROM TB1 WHERE CONVERT(INT,LEFT(COL1,2))<13 AND CONVERT(INT,LEFT(COL1,2))>6
SELECT coll FROM tb1 WHERE coll like SUBSTRING(CONVERT(varchar(20),coll),1,CHARINDEX('+'CONVERT(varchar(20),coll))-1)+'%' 如果coll是字符串类型就不用转换了
上面写错了 SELECT coll FROM tb1 WHERE CONVERT(int,SUBSTRING(CONVERT(varchar(20),coll),1,CHARINDEX('+',CONVERT(varchar(20),coll))-1)) BETWEEN 6 and 13
但我要从15-37的呢, col1 like '1[5-9]+%' or col1 like '2[0-9]+%' or col1 like'3[0-7]+%'用CONVERT的方法不能保证正确,因为是写在WHERE里的,万一表里有一条不能转换就会出错.15-87 可以这么写: col1 like '1[5-9]+%' or col1 like '[2-7][0-9]+%' or col1 like'8[0-7]+%' 这样举例是为了说明并不必写得很长.
SELECT COLL FROM TABLE WHERE LEFT(COLL,CHARINDEX('+',COLL)-1)>=6 AND LEFT(COLL,CHARINDEX('+',COLL)-1)<=13
哪不是要构造很多吗?
如col1 like '1[5-9]+%' or col1 like '2[0-9]+%'
or col1 like'3[0-7]'
SELECT COL1 FROM TB1 WHERE CONVERT(INT,LEFT(COL1,2))<13 AND CONVERT(INT,LEFT(COL1,2))>6
FROM tb1
WHERE coll like SUBSTRING(CONVERT(varchar(20),coll),1,CHARINDEX('+'CONVERT(varchar(20),coll))-1)+'%'
如果coll是字符串类型就不用转换了
SELECT coll
FROM tb1
WHERE CONVERT(int,SUBSTRING(CONVERT(varchar(20),coll),1,CHARINDEX('+',CONVERT(varchar(20),coll))-1)) BETWEEN 6 and 13
col1 like '1[5-9]+%' or col1 like '2[0-9]+%'
or col1 like'3[0-7]+%'用CONVERT的方法不能保证正确,因为是写在WHERE里的,万一表里有一条不能转换就会出错.15-87
可以这么写:
col1 like '1[5-9]+%' or col1 like '[2-7][0-9]+%'
or col1 like'8[0-7]+%'
这样举例是为了说明并不必写得很长.
FROM TABLE
WHERE LEFT(COLL,CHARINDEX('+',COLL)-1)>=6
AND LEFT(COLL,CHARINDEX('+',COLL)-1)<=13
不过为什么不能直接写15-37呢?
LIKE的缺点是不好写程序,特别是条件是在程序里生成的,但也能写出来,不管是VB还是DELPHI.
只是太麻烦,生成的SQL好长,,