说到sql,不免会想到t-sql,这篇主要就是要和大家讨论的t-sql语句。
1:赋值
a:为变量单个赋值
BEGIN
DECLARE @SID INT,
@SNAME VARCHAR(1)
SET @SID=0 --只能为一个变量赋值
SET @SNAME='A'
PRINT @SID
PRINT @SNAME
END
GO
b:select为变量赋值
BEGIN
DECLARE @SID INT,
@SNAME VARCHAR(1)
SET @SID=0 --只能为一个变量赋值
SET @SNAME='A'
select @SID=sid,@SNAME=sname FROM student where sid=1 --从此赋值看出,赋值只把最后一次的打印了出来,其他的被覆盖了
PRINT @SID
PRINT @SNAME
END
GO
2:流程控制
a:begin...end
BEGIN
DECLARE @TIME DATETIME
SET @TIME=GETDATE()
print @TIME
END
GO
b:if...else
IF OBJECT_ID('A') IS NOT NULL
DROP TABLE A
ELSE
PRINT 'AA'
GO
c:case
SELECT SIDNAME=
CASE
WHEN SID=1 THEN 1
WHEN SID=2 THEN 2
END
FROM STUDENT WHERE SID=1
d:while
BEGIN
DECLARE @I INT
SET @I=1
WHILE @I<2
BEGIN
PRINT 'WW'
SET @I=@I+1
END
PRINT 'END'
END
GO
3:内置函数
a:len()字符串长度
print len('aaaaa')
b:left()或者right()
select LEFT(rtest,5) from role
select RIGHT(rtest,5) from role
c:substring()
select SUBSTRING(rtest,1,5) from role
d:replicate()
SELECT REPLICATE(RTEST,3) FROM role 3为重复查询值3次
e:stuff()
SELECT STUFF(rtest,1,5,'OOOOOOO') FROM role --stuff(字符型表达式,开始位置,长度,替换字符)
f:rtrim()或者ltrim()
SELECT LTRIM(rtest) FROM role --LTRIM或者RTRIM为去掉左空格或去掉右空格
g:reverse()
SELECT REVERSE(RTEST) FROM role --REVERSE为字符串的颠倒顺序
h:charindex()
SELECT CHARINDEX('SQL', 'Microsoft SQL Server') --charindex返回一个字符串在另一个字符串的开始位置
i:patindex()
select patindex('%bc%','abcdgggbc') --返回前面的匹配字符在后面字符的出现位置
j:时间函数
SELECT DATEADD(DAY,0,GETDATE()) --在原来的基础上加2天
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') --返回二个时间之间的天数
SELECT DATEPART(YYYY,GETDATE()) --返回时间的一部分
SELECT DATENAME(MONTH,GETDATE()) --返回部分日期
k:类型转换
SELECT * FROM role WHERE CAST(rid AS VARCHAR)=1 --CAST(COLUMN AS TYPE)转化类型
SELECT CONVERT(VARCHAR(30),GETDATE(),121) title
4:自定义函数
a:自定义函数
CREATE FUNCTION MAXO(
@A INT,
@B INT
)
RETURNS INT
BEGIN
DECLARE @MAX INT
IF @A>@B
SET @MAX=@A
ELSE
SET @MAX=@B
RETURN @MAX
END
GO
SELECT dbo.MAXO(2,4)
b:删除函数
DROP FUNCTION MAXO
这些都是基本的函数,再复杂的东西都是由基本的东西构成,掌握了基本的就好。