SQL 集合运算及常用函数
SQL 函数
一、字符转换函数
1. ASCII ()
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
SELECT ASCII('iTalkbb') ---------- 105 |
2. CHAR ()
将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。
SELECT char(105) ---------- i |
3. LOWER ()
LOWER()将字符串全部转为小写;
SELECT lower('iTalkbb'),upper('iTalkbb') ---------- ---------- italkbb ITALKBB |
4. UPPER ()
UPPER()将字符串全部转为大写。
SELECT lower('iTalkbb'),upper('iTalkbb') ---------- ---------- italkbb ITALKBB |
5. STR ()
把数值型数据转换为字符型数据。
STR (<float_expression>[,length[, <decimal>]])
length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;
当length 小于小数点左边(包括符号位)的位数时,返回length 个*;
先服从length ,再取decimal ;
当返回的字符串位数小于length ,左边补足空格。
SELECT STR(123.45, 6, 1); ---------- 123.5 |
二、去空格函数
1. LTRIM ()
把字符串头部的空格去掉。
SELECT ltrim(' iTalkBB') ---------- iTalkBB |
2. RTRIM ()
把字符串尾部的空格去掉。
SELECT rtrim('iTalkBB ') ---------- iTalkBB |
三、取子串函数
1. LEFT ()
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。
SELECT left('iTalkbb',2) ---------- iT |
2. RIGHT ()
RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 个字符。
datediff是字符型函数 SELECT RIGHT('iTalkbb',2) ---------- bb |
3. SUBSTRING ()
SUBSTRING (<expression>, <starting_ position>, length)
返回从字符串左边第starting_ position 个字符起length个字符的部分。
SELECT SUBSTRING('iTalkbb',2,4) ---------- Talk |
四、字符串比较函数
1. CHARINDEX ()
返回字符串中某个指定的子串出现的开始位置。
CHARINDEX (<’substring_expression’>, <expression>)
其中substring _expression 是所要查的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数不能用于TEXT 和IMAGE 数据类型。
SELECT CHARINDEX('a','italkbb') ---------- 3 SELECT CHARINDEX('Hooyes’,’ ItalkBB') ---------- 0 |
2. PATINDEX ()
返回字符串中某个指定的子串出现的开始位置。
PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0。
与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。
SELECT PATINDEX('AB%','1ABCD') ---------- 0 SELECT PATINDEX('%AB','1ABCD') ---------- 0 SELECT CHARINDEX('AB','1ABCD') ---------- 2 SELECT PATINDEX('%[B,C,0-9]%','XYZABC123') ---------- 5 |
五、字符串操作函数
1. QUOTENAME ()
返回被特定字符括起来的字符串。
QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。
SELECT QUOTENAME('iTalkbb') ---------- [iTalkbb] SELECT QUOTENAME('iTalkbb','<>') ---------- <iTalkbb> |
2. REPLICATE ()
返回一个重复character_expression 指定次数的字符串。
REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL 。
SELECT REPLICATE('iTalkBB',2) -------------- iTalkBBiTalkBB |
3. REVERSE ()
将指定的字符串的字符排列顺序颠倒。
REVERSE (<character_expression>) 其中character_expression 可以是字符串、常数或一个列的值。
SELECT REVERSE('iTalkBB') ---------- BBklaTi |
4. REPLACE ()
返回被替换了指定子串的字符串。
REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替换在string_expression1 中的子串string_expression2。
SELECT REPLACE('iTalkBB','BB','MOBO') ---------- iTalkMOBO |
5. SPACE ()
返回一个有指定长度的空白字符串。
SPACE (<integer_expression>) 如果integer_expression 值为负值,则返回NULL 。
SELECT 'i'+SPACE(2)+'am' ---------- i am |
6. STUFF ()
用另一子串替换字符串指定位置、长度的子串。
STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)
如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。
如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。
SELECT STUFF('www.italkbb',5,7,'mobo') ------------ bo 例1:查询信用卡的表,要求只显示前两位和后4位,中间用星号显示。 SELECT STUFF(CREDIT_CARD,3,LEN(CREDIT_CARD)-6 ,REPLICATE('*',LEN(CREDIT_CARD)-6)) FROM ACCOUNT_CC ------------------ 40**********9900 40**********0130 40**********2623 例2:查询用户Email 要示Email只显示前1位和@后面的内容。 SELECT top 100 STUFF(EMAIL,2,charindex('@',EMAIL)-2,REPLICATE('*',charindex('@',EMAIL)-2)) from MEMBER order by acctid -------------------------- t***********@yahoo c*******@hotmail w*****@comcast t***@yahoo a**********@hotmail l***@gmu.edu y******@gmail b*******@gmail |
7. LEN ()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论