1.有一表tb,有两个字段,分别为id(int),userID(varchar)
tb表中的数据如下:
id userID
1 1,5,6
2 3,4,7,15
3 4,5,9
4 5
现在请问,如何取出userID里包含有5的记录?
也就是说取出第1,3条记录,第2条记录不符合要求.谢谢!
答案:
select * from tb where charindex(',5,',','+userid+',')>0
注解:
charindex 是用于子字符串搜索的函数,用于sqlserver 2000中。
语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )
参数
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
返回类型
int
USE pubs
GO
SELECT CHARINDEX('wonderful', notes)
FROM titles
WHERE title_id = 'TC3218'
GO
-- Use the optional start_location parameter to start searching
-- for wonderful starting with the fifth character in the notes
-- column.
USE pubs
GO
SELECT CHARINDEX('wonderful', notes, 5)
FROM titles
WHERE title_id = 'TC3218'
GO
下面是第一个查询和第二个查询的结果集:
-----------
46
2.有表product
字段:productId productName version ammount
1 aa 1.0 20
2 dd 2.0 60
处理:
就是把产品名称和版本号合在一起
sqlserver 2000:
select a.productName+convert(varchar,version) from product
此sql语句用到convert函数,将数转换成了字符串,然后通过“+”进行连接。
3.;批量插入数据(sqlserver 2000)
sql语句:
declare @i int --变义变量@i
set @i = 1--初始化@i为1
while @i < 101 --如果@i小于101,即插入100条记录
begin
insert into student (id,NAME,age) values(@i,'himm','250')
set @i = @i + 1
end
插入100万条数据需要10分钟左右。