Sqlserver常见字符串/日期处理函数
1:字符串比较函数 ①:charindex(<’substring_expression’>,<expression>) 其中substring?_expression?是所要查找的字符,expression?可为字符串也可为列名表达式。如果没有发现子串,则返回值。 select?charindex('弹弹堂',title)?from?news--每行title列里面‘弹弹堂’出现的位置 select?charindex('异界逍遥','abcd异界逍遥')--结果:5 ②:PATINDEX?(<’%substring?_expression%’>,<expression>) 定义和charindex相同,区别:PATINDEX函数支持使用通配符,可以用在很多有变化的查找中。而CHARINDEX不可以 --匹配含有‘异界’的字符串 select?patindex('%异界%','abcd异界逍遥')--结果:5 --匹配以‘异界’开头的字符串 select?patindex('异界%','abcd异界逍遥')--结果:0 select?patindex('异界%','异界逍遥')--结果:1 --匹配含有‘Bread’或‘bread’的字符串 select?patindex('%[b,B]read%','eat?bread?Bread')--结果:5 2:字符串处理函数 ①:STUFF(<character_expression1>,<start_?position>,<length>,<character_expression2>) 用另一子串替换字符串指定位置、长度的子串。 select?STUFF?('abcdefg',1,?2,'什么')--结果:什么cdefg select?STUFF?(title,'什么')?from?news?where?id<6--把每行title列的字符串从位置开始算起的个字符替换成‘什么’ ②:REPLACE?(<string_expression1>,<string_expression2>,<string_expression3>)? 用string_expression3?替换在string_expression1?中的子串string_expression2(如果找不到string_expression2就原样输出string_expression1)。 select?replace('C#.NET','.','and')--结果:C#andNET ③:SUBSTRING?(<expression>,<starting_?position>,length) 返回从字符串左边第starting_?position?个字符起length个字符的部分。 select?substring('C#.NET',2)--结果:C# ④:left(<character_expression>,<integer_expression>) 返回character_expression?左起integer_expression?个字符 right(<character_expression>,<integer_expression>)同理 select?left('123456',3)--结果:123 ⑤:LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。 select?lower('ddQAA')--结果:ddqaa select?upper('UUUlove')--结果:UUULOVE 3:去空格函数 LTRIM()?把字符串头部的空格去掉。 RTRIM()?把字符串尾部的空格去掉。 select?ltrim('?abc') select?rtrim('abc?') 4:数据类型转换函数 ①:CAST?(<expression>?AS?<data_?type>[?length?]) select?1+'a'--错误:在数据库里面数字类型和字符类型的数据是无法做字符串连接的,要先把数字类型的转换一下 select?cast(1?as?varchar)+'a'--结果:1a ②:CONVERT?(<data_?type>[?length?],<expression>,[style]) select?convert(varchar(10),getdate(),120)--结果:2012-06-05 5:日期函数 ①:day(date_expression):返回date_expression中的日期值 ②:month(date_expression):返回date_expression中的月份值 ③:year(date_expression):返回date_expression中的年份值 ④:DATEADD?(<datepart>,<number>,<date>) 返回指定日期date?加上指定的额外日期间隔number?产生的新日期。 select?dateadd(month,2,'2004-10-15')--结果:-12-15?00:00:00.000 select?dateadd(day,'2004-10-15')--结果:-10-17?00:00:00.000 ⑤:DATEDIFF?(<datepart>,<date1>,<date2>) 返回两个指定日期在datepart?方面的不同之处,即date2?超过date1的差距值,其结果值是一个带有正负号的整数值。 select?datediff(day,'2004-09-01','2004-09-18')--结果:17 ⑥:DATENAME?(<datepart>,<date>) 以字符串的形式返回日期的指定部分此部分。由datepart?来指定。 SELECT?datename(weekday,?'2012-06-05')--结果:星期二 SELECT?datename(dd,?'2012-06-05')--结果:5 ⑦:DATEPART?(<datepart>,<date>) 以整数值的形式返回日期的指定部分。此部分由datepart?来指定。 DATEPART?(dd,date)?等同于DAY?(date) DATEPART?(mm,date)?等同于MONTH?(date) -DATEPART?(yy,date)?等同于YEAR?(date) select?datepart(dd,'2012-6-3')--结果:3 ⑧:GETDATE():获取当前时间 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |