例題1:
20到50之間能被5除余1的所有自然數(shù)的和
EDECLARE @i int
DECLARE @s int
SET @s=0
SET @i=20
白WHILE @i <=50
BEGIN
IF(@i%5=1)
SET @s = @s + @i
SET @i=@i+1
END
PRINT'20到50之間能被5除余1的所有自然數(shù)的和是'+cast(@s as varchar(20))
?
例題2:
實現(xiàn)如下圖
代碼
DECLARE @i int
DECLARE @j int
DECLARE @str varchar(50)
SET @i = 1
WHILE @i<=5
BEGIN
SET @j = 1
SET @str=''
WHILE @j<11-@i*2
BEGIN
SET @str = @str +'"
SET @j = @j+1
END
SET @j= 0:
WHILE @j<2*@i-1
BEGIN
SET @str=@str+CAST( @i as CHAR(1))+''
SET @j = @j + 1
END
PRINT @str
SET @i=@i +1
END
?例題3:
代碼:power表示power(i,j)-----i的j次方
DECLARE @i int
DECLARE @j int
DECLARE @temp int
DECLARE @str varchar(50)
SET @i = 1
WHILE @i<=5
BEGIN
SET @j= 1
SET @str =''
WHILE @j <= @i
BEGIN
SET @str = @str +''+ CAST( power( @i, @j ) AS VARCHAR(20))
SET @j=@j+1
END
PRINT @str
SET @i = @i + 1
END
例題4:
?實現(xiàn)
代碼:
DECLARE @i INT
DECLARE @color VARCHAR(50)
SET @color ='紅橙黃綠青藍(lán)紫’
SET @i=0
WHILE @i < 7
BEGIN
PRINT SUBSTRING( @color, @i +1,7-@i)+SUBSTRING(@color,1,@i)
SET @i=@i+1
END
?注:substring是從1開始,第一個參數(shù)表示要截取的字符串,第二個i和第三個j表示從第i個開始截,截取j個,如:str=HELLO,?substring(str,2,4),得到的結(jié)果為:ELLO
如果是sucstring(str,2):表示從第二個開始截,一直截到最后一個字符
例題5
實現(xiàn)
?代碼:
注:
replicate的用法
replicate(’L‘,1)+'手機'? ?得到:L手機
第一個字符表示要重復(fù)的字母或字符串,第二個表示重復(fù)次數(shù)
reverse的用法:
reverse就是將字符串倒過來輸出,如:一二三四五六七八九,操作后變?yōu)榫虐似吡逅娜?/p>
兩個方法的主要思想:
該方法把每一行的字符拆成三部分看,例如:
一二三四五六七八九? ? ? 九? ? ? ?九八七六五四三二一
方法1:
DECLARE @i INT
DECLARE @inwords VARCHAR (50)
DECLARE @outwords VARCHAR(50)
DECLARE @1en INT
SET @inwords ='一二三四五六七八九'
SET @1en=LEN(@inwords)
SET @i =0
WHILE @i<= @1en
BEGIN
PRINT SUBSTRING @inwords, 1,@1en-@i)
+REPLICATE(SUBSTRING (@inwords,@1en,1),2*@i+1 )
+REVERSE(SUBSTRING(@inwords ,1,@1en-@i))
SET @i = @i + 1
END
方法2:
DECLARE @i INT, @j INT, @k INT
DECLARE @inwords VARCHAR(50)
DECLARE @len INT
SET @inwords ='一二三四五六七八九'
SET @1en=LEN(@inwords)
SET @inwords =@inwords+'九'+REVERSE(@inwords)
SET @i= 0
SET @j = 9
SET @k= 3
WHILE @i <= @1en
BEGIN
PRINT STUFF( @inwords, @j, @k, REPLICATE('九',@k))
SET @i = @i + 1
SET @j=@j-1
SET @k=@k+2
END
stuff字符串函數(shù):
STUFF
字符串函數(shù)是將字符串插入到另一個字符串中。它會刪除開始位置第一個字符串中的指定長度的字符,然后將第二個字符串插入到開始位置的第一個字符串中,語法如下。
STUFF(<character_expression>,<開始>,<長度>,<character_expression>)
<character_expression>
參數(shù)是給定的字符串?dāng)?shù)據(jù),可以是字符或二進制數(shù)據(jù)的常量,變量或列。<start>
參數(shù)是一個整數(shù)值,指定開始刪除和插入的位置,可以是BIGINT
類型。如果<開始>或<長度>參數(shù)為負(fù)數(shù),則返回NULL
字符串。如果<start>
參數(shù)比第一個<character_expression>
長,則返回一個NULL
字符串。?<length>
參數(shù)可以是BIGINT
類型,它是一個整數(shù),指定要刪除的字符數(shù)。如果<length>
比第一個<character_expression>
長,則刪除發(fā)生到最后一個<character_expression>
中的最后一個字符。
DECLARE @FullName VARCHAR(100)
DECLARE @Alias VARCHAR(20)
SET @FullName = 'Jeffcky Wang'
SET @Alias = ' "Superman" '
SELECT STUFF(@FullName, CHARINDEX(' ', @FullName), 1, @Alias) AS [FullName]
charindex:表示返回指定字符串的位置
如:
1.簡單用法
select charindex('test','this Test is Test')
查詢結(jié)果:
2.增加開始位置
select charindex('test','this Test is Test',7)
查詢結(jié)果:
3.大小寫敏感
select charindex('test','this Test is Test'COLLATE Latin1_General_CS_AS)
查詢結(jié)果:
返回結(jié)果為0
???,不要懷疑你的眼睛,因為大小寫敏感,找不到test
所以返回的就是0
,默認(rèn)情況下, SQL SERVER是大小不敏感的,所以我們簡單示例中返回結(jié)果不為0
,但是有些時候我們需要特意去區(qū)分大小寫,因此專門SQL SERVE提供了特殊的關(guān)鍵字用于查詢時區(qū)分大小寫,其中CS
為Case-Sensitve
的縮寫。
4.大小寫不敏感
select charindex('Test','this Test is Test'COLLATE Latin1_General_CI_AS)
查詢結(jié)果:
我們也可以這樣說明是大小寫不敏感,其中CI
是Case-InSensitve
的縮寫,即大小寫不敏感,當(dāng)然我們沒必要多此一舉。
?參考:http://t.csdn.cn/Um24k??????文章來源:http://www.zghlxwxcb.cn/news/detail-446659.html
如果對sql內(nèi)置函數(shù)不熟:http://t.csdn.cn/exzcN文章來源地址http://www.zghlxwxcb.cn/news/detail-446659.html
到了這里,關(guān)于數(shù)據(jù)庫(mysql語句)循環(huán)語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!