T-SQL 学习

学习一个语句
 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值