学习一个语句
select cast(180+(200-180)*rand() as int)
分析: rand()返回0到1之间的随机float值
cast(expressopm AS data_type) //将某种数据类型的表达式显式转换为另一种数据类型
关于sql
SQL Server 2000中常用的两种方法:
1、写个字定义函数;
2、用游标.
----------------------
来看个例子,如下:
车主号码 车牌号码车量类型
13413000966LS152701
13413000966LS158601
13413010139L4380602
13413010139L7Q39207
13413011709LM587702
13413011709LM588102
13413049887L5X69707
13413049887L5X79307
13413051190L9V00507
13413051190LN301207
13413051190L8V09607
像上面这样的表,如何将车牌号码和类型合并到一个另一个表生成如下格式:
车主号码 备注
13413000966车牌号码:LS1527 车辆类型:01 车牌号码:LS1586 车辆类型:01
13413010139车牌号码:L43806 车辆类型:02 车牌号码:L7Q392 车辆类型:07
-----------------最佳函数(maybe...)
--建立測試環境
Create Table TEST
(车主号码Varchar(11),
车牌号码Varchar(10),
车辆类型Char(2))
--插入數據
Insert TEST Select '13413000966','LS1527','01'
Union All Select '13413000966','LS1586','01'
Union All Select '13413010139','L43806','02'
Union All Select '13413010139','L7Q392','07'
Union All Select '13413011709','LM5877','02'
Union All Select '13413011709','LM5881','02'
Union All Select '13413049887','L5X697','07'
Union All Select '13413049887','L5X793','07'
Union All Select '13413051190','L9V005','07'
Union All Select '13413051190','LN3012','07'
Union All Select '13413051190','L8V096','07'
GO
--建立函數
Create Function F_TEST(@车主号码Varchar(11))
Returns Nvarchar(2000)
As
Begin
Declare @S Nvarchar(4000)
Select @S = ''
Select @S = @S + N' 车牌号码:' + 车牌号码 + N' 车辆类型:' + 车辆类型 From TEST Where 车主号码 = @车主号码
Select @S = Stuff(@S, 1, 2, '')
Return @S
End
GO
--測試
Select 车主号码,dbo.F_TEST(车主号码) As 备注 From TEST Group By 车主号码
GO
--刪除測試環境
Drop Table TEST
Drop Function F_TEST
--結果
/*
车主号码备注
13413000966车牌号码:LS1527 车辆类型:01 车牌号码:LS1586 车辆类型:01
13413010139车牌号码:L43806 车辆类型:02 车牌号码:L7Q392 车辆类型:07
13413011709车牌号码:LM5877 车辆类型:02 车牌号码:LM5881 车辆类型:02
13413049887车牌号码:L5X697 车辆类型:07 车牌号码:L5X793 车辆类型:07
13413051190车牌号码:L9V005 车辆类型:07 车牌号码:LN3012 车辆类型:07 车牌号码:L8V096 车辆类型:07
*/
分析:
nvarchar(n):包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。
nchar(n):包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。
stuff:
第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO
下面是结果集:
---------
aijklmnef
有一表,某几列数据相同,现需求取其一行:
A B
1 5566 1234
2 5566 2345
3 5566 4567
4 3344 5678
5 3344 7890
按要求应取如下两行:
5566 1234
3344 5678
select a.* from table a,(select A,min(B) B from table group by A) b where
a.A=b.A and a.B=b.B