sql函数

SQL递归函数

房东的猫 提交于 2020-01-17 04:06:31
生成一张表,添加数据 DROP table IF EXISTS Dept ; create table Dept ( ID int , ParentID int , msg varchar ( 20 ) ) insert into Dept select 1 , 0 , '中国' insert into Dept select 2 , 1 , '上海' insert into Dept select 3 , 1 , '浙江' insert into Dept select 4 , 2 , '普陀区' insert into Dept select 5 , 3 , '杭州' insert into Dept select 6 , 5 , '西湖区' insert into Dept select 7 , 6 , '双浦镇' go 递归函数: Create function GetChild ( @ID varchar ( 10 ) ) returns @t table ( ID varchar ( 10 ) , ParentID varchar ( 10 ) , Level int , msg varchar ( 20 ) ) as begin declare @i int set @i = 1 --insert into @t select @ID,@ID,0 --当前级,本级

sql字符串插入函数STUFF

删除回忆录丶 提交于 2020-01-16 18:46:52
STUFF (Transact-SQL) SQL Server 2012 其他版本 此主题尚未评级 - 评价此主题 <?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/1999/xhtml" NS = "http://www.w3.org/1999/xhtml" />STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。 Transact-SQL 语法约定 语法 STUFF ( character_expression , start , length , replaceWith_expression ) 参数 character_expression 一个字符串数据 表达式 。 character_expression 可以是常量、变量,也可以是字符列或二进制数据列。 start 一个整数值,指定删除和插入的开始位置。 如果 start 或 length 为负,则返回空字符串。 如果 start 比第一个 character_expression 长,则返回空字符串。 start 的类型可以是 bigint。 length 一个整数,指定要删除的字符数。 如果 length 比第一个 character_expression 长

oracle sql日期比较:

天大地大妈咪最大 提交于 2020-01-15 12:33:04
共三部分: 第一部分:oracle sql日期比较: http://www.blogjava.net/forker/archive/2007/09/07/143467.html#Post 第二部分: Oracle 获取当前日期及日期格式 http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html 第三部分: 获取昨天: select trunc(SYSDATE-1) from dual; 检查一下: select to_char (trunc(SYSDATE-1),'yyyy-mm-dd HH24:MI:SS') from dual; 获取上个月第一天00:00:00: select add_months(trunc(sysdate,'MON'),-1) from dual select add_months(trunc(sysdate,'MON'),-13) from dual也可以 获取上个月今天00:00:00: SELECT trunc(add_months( sysdate,-1 ))FROM dual 获得本季度第一天 SELECT TRUNC(add_months(SYSDATE,0),'Q') FROM dual 获得上季度第一天 SELECT TRUNC(add_months(SYSDATE,-3),'Q') FROM

SQL SERVER 字符串函数 PATINDEX()

我的梦境 提交于 2020-01-15 07:09:57
定义: PATINDEX()返回模式在指定表达式中第一次出现的起始位置;如果在所有有效的文本和字符数据类型中都找不到该模式,则返回零。 语法: PATINDEX ( '%pattern%' , expression ) 参数: pattern:包含要查找的序列的字符表达式。 可以使用通配符;但 pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外) 。 pattern 是字符串数据类型类别的表达式 。 pattern最多包含 8000 个字符 。 expression 是字符串数据类型类别的表达式 。 返回值: bigint(如果 expression 的数据类型为 varchar(max) 或 nvarchar(max));否则为 int 。 原文表述:“ 如果 pattern 或 expression 为 NULL,则 PATINDEX 返回 NULL 。 ”是部分错误的。 正确表述: 如果 pattern 为 NULL,则 PATINDEX 返回 NULL 。 如果 expression 为 NULL,则SSMS会报错 。 PATINDEX 的起始位置为 1。 例: ※不区分大小写 参考原文地址: https://docs.microsoft.com/zh-cn/sql/t-sql/functions/patindex-transact-sql?view

SQL Server计算列

心不动则不痛 提交于 2020-01-13 20:11:26
计算列 由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。   例如,在 AdventureWorks 示例数据库中, Sales.SalesOrderHeader 表的 TotalDue 列具有以下定义: TotalDue AS Subtotal + TaxAmt + Freight 。   除非另行指定,否则计算列是未实际存储在表中的虚拟列。每当在查询中引用计算列时,都将重新计算它们的值。数据库引擎在 CREATE TABLE 和 ALTER TABLE 语句中使用 PERSISTED 关键字来将计算列实际存储在表中。如果在计算列的计算更改时涉及任何列,将更新计算列的值。通过将计算列标记为 PERSISTED,可以对具有确定性但不精确的计算列创建索引。另外,如果计算列引用 CLR 函数,则数据库引擎不能验证该函数是否真正具有确定性。在这种情况下,计算列必须为 PERSISTED,以便可对其创建索引。   计算列可用于选择列表、 WHERE 子句、 ORDER BY 子句或任何可使用正则表达式的其他位置,但下列情况除外:   用作 CHECK、 FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义

sql字符串函数

北战南征 提交于 2020-01-11 15:13:19
计算字符串长度 len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大、小写 lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lower( ' I AM A STUDENT ! ' ) select upper( 'i am a student !' ) 截去字符串左、右侧空格 ltrim() 用来将一个字符串左侧的空格去掉 ,rtrim()用来将一个字符串右侧的空格去掉 declare @str varchar( 100 ) set @str = ' 我的左侧有空格! ' select @str as 初始字符, len(@str) as 初始长度,ltrim(@str) as 现有字符,len(ltrim(@str)) as 现有长度 返回由重复的空格组成的字符串 space( integer_expression ) integer_expression 指示空格个数的正整数。如果 integer_expression 为负,则返回空字符串。 select ' A ' + space( 2 ) + ' B ' 取子字符串 substring(string,start_position,length) 可以从任意位置取任意长度的子字符串, left

Sql Server函数全解(一)字符串函数

二次信任 提交于 2020-01-11 15:06:57
字符串函数用于对字符和二进制字符进行各种操作 1.ASCII()函数  ASCII(character_expression)函数用于返回字符串表达式中最左侧的ASCII代码值。参数character_expression必须是一个char或varchar类型的字符串表达式。   eg: select ASCII('s'),ASCII('sql'),ASCII('1'); 执行结果如图: 字符's'的ASCII值为115,所以第一行和第二行返回结果相同,对于第三条语句中的纯数字的字符串,可以不用单引号括起来。 2.CHAR()函数  CHAR(integer_expression)函数将整数类型的ASCII值转换为对应的字符,integer_expression是一个介于0~255之间的整数。如果该整数表达式不在此范围内,将返回null值。 eg: select CHAR(115),CHAR(49); 可以看到,这里返回的值与ASCII函数的返回值正好相反. 3.LEFT()函数   LEFT(character_expression,integer_expression)函数返回字符串左边开始指定个数的字符串、字符或者二进制数据表达式。character_expression是字符串表达式,可以是常量,变量或字段。integer_expression为整数,指定character

SQL-字符串运算符和函数

与世无争的帅哥 提交于 2020-01-11 15:06:26
COALESCE(columnname,string) 函数   将 NULL 值作为字符串(用空字符串或其他字符串替换 NULL)- 接受一列输入值(字段)如果该字段为 NULL,则返回后面替换的字符串 1 SELECT custid,country,region,city,country+N','+region+N','+city AS location FROM Sales.Customers SELECT custid,country,region,city,country+N','+COALESCE(region,N'q')+N','+city AS location FROM Sales.Customers SUBSTRING(string,start,length)   提取从指定位置开始,具有特定长度的字符串 SELECT SUBSTRING('abcde',2,2); LEFT(string,n), RIGHT(string,n)   第一个参数是要处理的字符串,第二个参数是要从字符串左边或右边提取字符的个数 SELECT LEFT('abcde',2),RIGHT('abcde',2); LEN(string),DATALENGTH(string)   LEN 函数返回字符数,DATALENGTH 函数返回字节数 SELECT LEN(N'ABCDE')

SQL Server 字符串处理函数Cheat Sheet

对着背影说爱祢 提交于 2020-01-11 15:05:42
ASCII :返回字符表达式中最左侧的字符的 ASCII 代码值。 select ASCII(expression) CHAR :将 int ASCII 代码转换为字符。 CHAR 可用于将控制字符插入字符串中 制表符 char(9) 换行符 char(10) 回车符 char(13) CHARINDEX :在 expression2 中搜索 expression1 并返回其起始位置(如果找到)。搜索的起始位置为 start_location。如果 expression2 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint,否则为 int。 CHARINDEX ( expression1 ,expression2 [ , start_location ] ) DIFFERENCE :返回一个整数值,指示两个字符表达式的 SOUNDEX 值之间的差异。 DIFFERENCE ( character_expression , character_expression ) LEFT :返回字符串中从左边开始指定个数的字符。 LEFT ( character_expression , integer_expression ) LEN :返回指定字符串表达式的字符数,其中不包含尾随空格。 LOWER

SQL截取字符串函数

爷,独闯天下 提交于 2020-01-10 08:36:57
A.截取从字符串左边开始N个字符 以下是代码片段: Declare @S1 varchar(100)   Select @S1='http://www.xrss.cn'   Select Left(@S1,4)   ------------------------------------   显示结果: http   B.截取从字符串右边开始N个字符(例如取字符www.163.com) 以下是代码片段: Declare @S1 varchar(100)   Select @S1='http://www.163.com'   Select right(@S1,11)   ------------------------------------   显示结果: www.163.com   C.截取字符串中任意位置及长度(例如取字符www) 以下是代码片段: Declare @S1 varchar(100)   Select @S1='http://www.xrss.cn'   Select SUBSTRING(@S1,8,3)   ------------------------------------   显示结果: www   以上例子皆是已知截取位置及长度,下面介绍未知位置的例子   2.截取未知位置的函数   A.截取指定字符串后的字符串(例如截取http://后面的字符串)