微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer常用系统函数(摘自网络)

--@H_502_6@字符串函数@H_502_6@

--@H_502_6@分别取左边个字符、右边个字符@H_502_6@

Declare@H_502_6@ @S@H_502_6@ Varchar@H_502_6@(@H_502_6@200)=@H_502_6@'abcdefghijk'@H_502_6@@H_502_6@

Select@H_502_6@ Left(@H_502_6@@S@H_502_6@,@H_502_6@3)@H_502_6@ as@H_502_6@ S1@H_502_6@,Right(@H_502_6@@S@H_502_6@,@H_502_6@3)@H_502_6@ as@H_502_6@ S2@H_502_6@@H_502_6@

Go@H_502_6@

--@H_502_6@从第个字符开始,取个字符@H_502_6@

Declare@H_502_6@ @S@H_502_6@ Varchar@H_502_6@(@H_502_6@200)=@H_502_6@'abcdefghijk'@H_502_6@@H_502_6@

Select@H_502_6@ SubString@H_502_6@(@H_502_6@@S@H_502_6@,@H_502_6@3,@H_502_6@4)@H_502_6@ as@H_502_6@ S1@H_502_6@@H_502_6@

Go@H_502_6@

--@H_502_6@从第个字符开始,取个字符,中文字符当成个字对待@H_502_6@

Declare@H_502_6@ @S@H_502_6@ Varchar@H_502_6@(@H_502_6@200)=@H_502_6@'a@H_502_6@@H_502_6@中国@H_502_6@bcd'@H_502_6@

Select@H_502_6@ SubString@H_502_6@(@H_502_6@@S@H_502_6@,@H_502_6@4)@H_502_6@ as@H_502_6@ S1@H_502_6@@H_502_6@

Go@H_502_6@

--@H_502_6@返回首字符@H_502_6@ASCII@H_502_6@码值,仅英文字母有效@H_502_6@

Select@H_502_6@ ASCII@H_502_6@(@H_502_6@'a'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@ASCII@H_502_6@(@H_502_6@'A'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@返回@H_502_6@ASCII@H_502_6@码的字符@H_502_6@

Select@H_502_6@ CHAR@H_502_6@(@H_502_6@65)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@CHAR@H_502_6@(@H_502_6@97)@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@产生个空格,为便于查看显示结果,前后补上了字符@H_502_6@x@H_502_6@、@H_502_6@y@H_502_6@

Select@H_502_6@ 'x'@H_502_6@+@H_502_6@Space@H_502_6@(@H_502_6@10)+@H_502_6@'y'@H_502_6@@H_502_6@

--@H_502_6@将数字转为固定宽度的字符串,总宽度,位小数,不足宽度前置空格@H_502_6@

--@H_502_6@若宽度不足,则返回@H_502_6@* @H_502_6@号代替,若小数位不足,则四舍五入@H_502_6@

Select@H_502_6@ Str@H_502_6@(@H_502_6@1234,@H_502_6@12,@H_502_6@2)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Str@H_502_6@(@H_502[email protected],@H_502_6@2)@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@Str@H_502_6@(@H_502[email protected],@H_502_6@2)@H_502_6@ as@H_502_6@ A3@H_502_6@,@H_502_6@2)@H_502_6@@H_502_6@

--@H_502_6@字符串替换,将字母@H_502_6@bc @H_502_6@全部替换为@H_502_6@xxx@H_502_6@

Select@H_502_6@ Replace@H_502_6@(@H_502_6@'abcdefbc'@H_502_6@,@H_502_6@'bc'@H_502_6@,@H_502_6@'xxx'@H_502_6@)@H_502_6@@H_502_6@

--@H_502_6@取子串位置,结果为@H_502_6@

Select@H_502_6@ CharIndex@H_502_6@(@H_502_6@'bc'@H_502_6@,@H_502_6@'abcdef'@H_502_6@)@H_502_6@@H_502_6@

--@H_502_6@取子串位置,从第个字符开始,结果为,表示未找到@H_502_6@

Select@H_502_6@ CharIndex@H_502_6@(@H_502_6@'bc'@H_502_6@,@H_502_6@'abcdef'@H_502_6@,@H_502_6@3)@H_502_6@@H_502_6@

--@H_502_6@取子串位置,含通配符,@H_502_6@%@H_502_6@百分号表示任意字符,@H_502_6@_@H_502_6@下划线表示个字符,中文字也算个字符@H_502_6@

Select@H_502_6@ PatIndex@H_502_6@(@H_502_6@'%cd%'@H_502_6@,@H_502_6@'abcdef'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@PatIndex@H_502_6@(@H_502_6@'%c_e%'@H_502_6@,@H_502_6@'abcdef'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@'abc@H_502_6@@H_502_6@中@H_502_6@ef'@H_502_6@)@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@取字符串长度,@H_502_6@Len@H_502_6@中文字当个字符,@H_502_6@DataLength@H_502_6@将个中文字当个字符@H_502_6@

Select@H_502_6@ Len@H_502_6@(@H_502_6@'abc'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Len@H_502_6@(@H_502_6@'ab@H_502_6@@H_502_6@中@H_502_6@'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@DataLength@H_502_6@(@H_502_6@'abc'@H_502_6@)@H_502_6@ as@H_502_6@ A3@H_502_6@,@H_502_6@DataLength@H_502_6@(@H_502_6@'ab@H_502_6@@H_502_6@中@H_502_6@'@H_502_6@)@H_502_6@ as@H_502_6@ A4@H_502_6@@H_502_6@

--@H_502_6@字符串反转@H_502_6@

Select@H_502_6@ Reverse@H_502_6@(@H_502_6@'abcdef'@H_502_6@)@H_502_6@@H_502_6@

 @H_502_6@

--@H_502_6@字符串大、小写@H_502_6@

Select@H_502_6@ Upper@H_502_6@(@H_502_6@'abcdef'@H_502_6@),@H_502_6@Lower@H_502_6@(@H_502_6@'aBCdEF'@H_502_6@)@H_502_6@@H_502_6@

--@H_502_6@删除前后空格,字符串中间空格不受影响,为便于查看显示结果,前后补上了字符@H_502_6@x@H_502_6@、@H_502_6@y@H_502_6@

Select@H_502_6@ 'x'@H_502_6@+@H_502_6@RTrim@H_502_6@(@H_502_6@' ab '@H_502_6@)+@H_502_6@'y'@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@'x'@H_502_6@+@H_502_6@LTrim@H_502_6@(@H_502_6@' ab '@H_502_6@)+@H_502_6@'y'@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@'x'@H_502_6@+@H_502_6@LTrim@H_502_6@(@H_502_6@RTrim@H_502_6@(@H_502_6@' ab '@H_502_6@))+@H_502_6@'y'@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@数值函数@H_502_6@

--@H_502_6@取绝对值@H_502_6@

Select@H_502_6@ ABS@H_502_6@(@H_502_6@5)@H_502_6@ As@H_502_6@ A1@H_502_6@,@H_502_6@ABS@H_502_6@(-@H_502_6@5)@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@ABS@H_502_6@(-@H_502[email protected])@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@四舍五入@H_502_6@

Select@H_502_6@ Round@H_502_6@(@H_502[email protected],@H_502_6@1)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Round@H_502_6@(@H_502[email protected],@H_502_6@3)@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@较小整数@H_502_6@

Select@H_502_6@ Floor@H_502_6@(@H_502[email protected])@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Floor@H_502_6@(@H_502[email protected])@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@Floor@H_502_6@(@H_502[email protected])@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@较大整数@H_502_6@

Select@H_502_6@ Ceiling@H_502_6@(@H_502[email protected])@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Ceiling@H_502_6@(@H_502[email protected])@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@Ceiling@H_502_6@(@H_502[email protected])@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@随机数,不提供种子,返回值每次都变化@H_502_6@

--@H_502_6@理论上,叫伪随机数,实际应用中,理解为随机数就@H_502_6@OK@H_502_6@

Select@H_502_6@ Rand@H_502_6@()@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Rand@H_502_6@()@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@随机数,给定种子,返回值始终相同@H_502_6@

Select@H_502_6@ Rand@H_502_6@(@H_502_6@1000),@H_502_6@Rand@H_502_6@(@H_502_6@100)@H_502_6@@H_502_6@

--@H_502_6@取幂值,返回的次方,若返回值超过@H_502_6@INT@H_502_6@范围,则报错@H_502_6@

Select@H_502_6@ Power@H_502_6@(@H_502_6@2,@H_502_6@8)@H_502_6@@H_502_6@

--@H_502_6@判断是否为数字@H_502_6@

Select@H_502_6@ IsNumeric@H_502_6@(@H_502_6@2)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@IsNumeric@H_502_6@(@H_502_6@'2.5'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@IsNumeric@H_502_6@(@H_502_6@'2.5A'@H_502_6@)@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

 @H_502_6@

--@H_502_6@日期型函数@H_502_6@

--@H_502_6@当前时间@H_502_6@

Select@H_502_6@ GetDate@H_502_6@()@H_502_6@@H_502_6@

--@H_502_6@往后天、往前天@H_502_6@

Select@H_502_6@ GetDate@H_502_6@()+@H_502_6@3 as@H_502_6@ A1@H_502_6@,@H_502_6@GetDate@H_502_6@()-@H_502_6@3 as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@往后秒、往前秒,用函数@H_502_6@DateAdd@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Second@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@DateAdd@H_502_6@(@H_502_6@Second@H_502_6@,-@H_502_6@3,@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@往后分、往前分,用函数@H_502_6@DateAdd@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Minute@H_502_6@,@H_502_6@DateAdd@H_502_6@(@H_502_6@Minute@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@往后小时、往前小时,用函数@H_502_6@DateAdd@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Hour@H_502_6@,@H_502_6@DateAdd@H_502_6@(@H_502_6@Hour@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@往后天、往前天,用函数@H_502_6@DateAdd@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Day@H_502_6@,@H_502_6@DateAdd@H_502_6@(@H_502_6@Day@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@往后月、往前月,用函数@H_502_6@DateAdd@H_502_6@,若碰到结果为月时,会自动处理好最大天数@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Month@H_502_6@,@H_502_6@'20140531'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@DateAdd@H_502_6@(@H_502_6@Month@H_502_6@,@H_502_6@'20140531'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@往后年、往前年,用函数@H_502_6@DateAdd@H_502_6@,若碰到结果为月时,会自动处理好最大天数@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Year@H_502_6@,@H_502_6@1,@H_502_6@'20160229'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@DateAdd@H_502_6@(@H_502_6@Year@H_502_6@,-@H_502_6@1,@H_502_6@'20160229'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@@H_502_6@

--@H_502_6@取年、月、日@H_502_6@

Select@H_502_6@ Year@H_502_6@(@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@Month@H_502_6@(@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@Day@H_502_6@(@H_502_6@GetDate@H_502_6@())@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@取年、月、日,用函数@H_502_6@DatePart@H_502_6@

Select@H_502_6@ DatePart@H_502_6@(@H_502_6@Year@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ As@H_502_6@ A1@H_502_6@,@H_502_6@DatePart@H_502_6@(@H_502_6@Month@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ As@H_502_6@ A2@H_502_6@,@H_502_6@@H_502_6@

 @H_502_6@

DatePart@H_502_6@(@H_502_6@Day@H_502_6@,@H_502_6@GetDate@H_502_6@())@H_502_6@ As@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@取月份最后一天,后月最后一天,前月最后一天@H_502_6@**@H_502_6@从@H_502_6@sql Server 2012@H_502_6@开始支持@H_502_6@

Select@H_502_6@ EOMonth@H_502_6@(@H_502_6@'20140603'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@EOMonth@H_502_6@(@H_502_6@'20140603'@H_502_6@,-@H_502_6@2)@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

--@H_502_6@取月份最后一天@H_502_6@**sql Server 2012@H_502_6@之前版本计算,在当月号加个月,再减天就是@H_502_6@

Declare@H_502_6@ @D@H_502_6@ DateTime@H_502_6@=@H_502_6@'20140603'@H_502_6@@H_502_6@

Select@H_502_6@ DateAdd@H_502_6@(@H_502_6@Day@H_502_6@,@H_502_6@Convert@H_502_6@(@H_502_6@Char@H_502_6@(@H_502_6@6),@H_502_6@@D@H_502_6@,@H_502_6@112)+@H_502_6@'01'@H_502_6@))@H_502_6@@H_502_6@

--@H_502_6@判断字符串是否是日期@H_502_6@

Select@H_502_6@ IsDate@H_502_6@(@H_502_6@'2015/02/29'@H_502_6@)@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@IsDate@H_502_6@(@H_502_6@'20150228'@H_502_6@)@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@@H_502_6@

IsDate@H_502_6@(@H_502_6@'20150228 25:00:00'@H_502_6@)@H_502_6@ as@H_502_6@ A3@H_502_6@,@H_502_6@IsDate@H_502_6@(@H_502_6@'23:15'@H_502_6@)@H_502_6@ as@H_502_6@ A4@H_502_6@@H_502_6@

 @H_502_6@

--@H_502_6@数据类型转换@H_502_6@

--sql Server@H_502_6@自动根据数据类型优先级作隐式转换@H_502_6@

--@H_502_6@但有时可能并不是想要的效果@H_502_6@

Declare@H_502_6@ @A1@H_502_6@ Varchar@H_502_6@(@H_502_6@200),@H_502_6@@A2@H_502_6@ Int@H_502_6@,@H_502_6@@A3@H_502_6@ Date@H_502_6@,@H_502_6@@A4@H_502_6@ Varchar@H_502_6@(@H_502_6@200)@H_502_6@@H_502_6@

Select@H_502_6@ @A1@H_502_6@=@H_502_6@GetDate@H_502_6@(),@H_502_6@@A2@H_502_6@=@H_502_6@'259'@H_502_6@,@H_502_6@@A3@H_502_6@=@H_502_6@GetDate@H_502_6@(),@H_502_6@@A4@H_502_6@=@H_502[email protected]@H_502_6@

Select@H_502_6@ @A1@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@@A2@H_502_6@ as@H_502_6@ A2@H_502_6@,@H_502_6@@A3@H_502_6@ as@H_502_6@ A3@H_502_6@,@H_502_6@@A4@H_502_6@ as@H_502_6@ A4@H_502_6@@H_502_6@

Go@H_502_6@

--@H_502_6@按指定格式将日期转换为字符@H_502_6@

Select@H_502_6@ Convert@H_502_6@(@H_502_6@VarChar@H_502_6@(@H_502_6@30),@H_502_6@GetDate@H_502_6@(),@H_502_6@112)@H_502_6@ as@H_502_6@ A1@H_502_6@ --YYYYMMDD@H_502_6@@H_502_6@

Select@H_502_6@ Convert@H_502_6@(@H_502_6@VarChar@H_502_6@(@H_502_6@30),@H_502_6@12)@H_502_6@ as@H_502_6@ A2@H_502_6@ --YYMMDD@H_502_6@@H_502_6@

Select@H_502_6@ Convert@H_502_6@(@H_502_6@VarChar@H_502_6@(@H_502_6@19),@H_502_6@121)@H_502_6@ as@H_502_6@ A3@H_502_6@ --YYYY-MM-DD HH:NN:SS@H_502_6@@H_502_6@

Select@H_502_6@ Convert@H_502_6@(@H_502_6@VarChar@H_502_6@(@H_502_6@30),@H_502_6@101)@H_502_6@ as@H_502_6@ A4@H_502_6@ --MM/DD/YYYY@H_502_6@@H_502_6@

Select@H_502_6@ Convert@H_502_6@(@H_502_6@VarChar@H_502_6@(@H_502_6@30),@H_502_6@102)@H_502_6@ as@H_502_6@ A5@H_502_6@ --YYYY.MM.DD@H_502_6@@H_502_6@

Go@H_502_6@

--@H_502_6@将数字、文字转换为日期@H_502_6@

--@H_502_6@数字就是@H_502_6@1900-01-01@H_502_6@,日期在@H_502_6@sql SERVER@H_502_6@内部就是存储为数字的,小数部分对应小时@H_502_6@:@H_502_6@分@H_502_6@:@H_502_6@秒@H_502_6@

Declare@H_502_6@ @A1@H_502_6@ DateTime@H_502_6@,@H_502_6@@A2@H_502_6@ DateTime@H_502_6@,@H_502_6@@A3@H_502_6@ DateTime@H_502_6@@H_502_6@

Select@H_502_6@ @A1@H_502_6@=@H_502_6@10,@H_502_6@@A2@H_502_6@=@H_502_6@'20140603 08:05'@H_502_6@,@H_502_6@@A3@H_502_6@=@H_502_6@'2014-05-03 18:09:05'@H_502_6@@H_502_6@

Select@H_502_6@ @A1@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@@A3@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

Go@H_502_6@

--@H_502_6@将日期转换为数字@H_502_6@

--@H_502_6@注意@H_502_6@A1@H_502_6@、@H_502_6@A2@H_502_6@的值有点区别@H_502_6@

Declare@H_502_6@ @A1@H_502_6@ Int@H_502_6@,@H_502_6@@A3@H_502_6@ Numeric@H_502_6@(@H_502_6@12,@H_502_6@2)@H_502_6@@H_502_6@

Select@H_502_6@ @A1@H_502_6@=@H_502_6@Cast@H_502_6@(@H_502_6@GetDate@H_502_6@()@H_502_6@ as@H_502_6@ Int@H_502_6@)@H_502_6@@H_502_6@

Select@H_502_6@ @A2@H_502_6@=@H_502_6@Cast@H_502_6@(@H_502_6@Cast@H_502_6@(@H_502_6@GetDate@H_502_6@()@H_502_6@ as@H_502_6@ Numeric@H_502_6@(@H_502_6@12,@H_502_6@2))@H_502_6@ as@H_502_6@ Int@H_502_6@)@H_502_6@@H_502_6@

Select@H_502_6@ @A3@H_502_6@=@H_502_6@Cast@H_502_6@(@H_502_6@GetDate@H_502_6@()@H_502_6@ as@H_502_6@ Numeric@H_502_6@(@H_502_6@12,@H_502_6@2))@H_502_6@@H_502_6@

Select@H_502_6@ @A1@H_502_6@ as@H_502_6@ A1@H_502_6@,@H_502_6@@A3@H_502_6@ as@H_502_6@ A3@H_502_6@@H_502_6@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐