sql 学习

 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分钟左右。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值