sql 自定义函数返回中文,数字,英文

--提取数字
IF OBJECT_ID(‘DBO.GET_NUMBER2‘) IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX(‘%[^0-9]%‘,@S) > 0
BEGIN
set @s=stuff(@s,patindex(‘%[^0-9]%‘,@s),1,‘‘)
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER(‘呵呵ABC123ABC‘)
GO
--123
--------------------------------------------------------------------
--提取英文
IF OBJECT_ID(‘DBO.GET_STR‘) IS NOT NULL
DROP FUNCTION DBO.GET_STR
GO
CREATE FUNCTION DBO.GET_STR(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX(‘%[^a-z]%‘,@S) > 0
BEGIN
set @s=stuff(@s,patindex(‘%[^a-z]%‘,@s),1,‘‘)
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_STR(‘呵呵ABC123ABC‘)
GO
--------------------------------------------------------------------
--提取中文
IF OBJECT_ID(‘DBO.CHINA_STR‘) IS NOT NULL
DROP FUNCTION DBO.CHINA_STR
GO
CREATE FUNCTION DBO.CHINA_STR(@S NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX(‘%[^吖-座]%‘,@S) > 0
SET @S = STUFF(@S,PATINDEX(‘%[^吖-座]%‘,@S),1,N‘‘)
RETURN @S
END
GO
PRINT DBO.CHINA_STR(‘呵呵ABC123ABC‘)
GO
--------------------------------------------------------------------
--过滤重复字符
IF OBJECT_ID(‘DBO.DISTINCT_STR‘) IS NOT NULL
DROP FUNCTION DBO.DISTINCT_STR
GO
CREATE FUNCTION DBO.DISTINCT_STR(@S NVARCHAR(100),@SPLIT VARCHAR(50))
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)
IF LEFT(@S,1)<>@SPLIT
SET @S = @[email protected]
IF RIGHT(@S,1)<>@SPLIT
SET @S = @[email protected]
WHILE CHARINDEX(@SPLIT,@S)>0 AND LEN(@S)<>1
BEGIN
SET @INDEX = CHARINDEX(@SPLIT,@S)
SET @TEMP = LEFT(@S,CHARINDEX(@SPLIT,@S,@INDEX+LEN(@SPLIT)))
IF @NEW IS NULL
SET @NEW = ISNULL(@NEW,‘‘)[email protected]
ELSE
SET @NEW = ISNULL(@NEW,‘‘)+REPLACE(@TEMP,@SPLIT,‘‘)[email protected]
WHILE CHARINDEX(@TEMP,@S)>0
BEGIN
SET @S=STUFF(@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT),CHARINDEX(@SPLIT,@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT))-CHARINDEX(@TEMP,@S),‘‘)
END
END
RETURN RIGHT(LEFT(@NEW,LEN(@NEW)-1),LEN(LEFT(@NEW,LEN(@NEW)-1))-1)
END
GO
PRINT DBO.DISTINCT_STR(‘A,A,B,C,C,B,C,‘,‘,‘)
--A,B,C
GO
--------------------------------------------------------------------
--过滤重复字符2
IF OBJECT_ID(‘DBO.DISTINCT_STR2‘) IS NOT NULL
DROP FUNCTION DBO.DISTINCT_STR2
GO
CREATE FUNCTION DBO.DISTINCT_STR2(@S varchar(8000))
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)
WHILE LEN(@S)>0
BEGIN
SET @NEW=ISNULL(@NEW,‘‘)+LEFT(@S,1)
SET @S=REPLACE(@S,LEFT(@S,1),‘‘)
END
RETURN @NEW
END
GO
SELECT DBO.DISTINCT_STR2(‘AABCCD‘)
--ABCD
GO

--------------------------------------------------------------------
IF OBJECT_ID(‘DBO.SPLIT_STR‘) IS NOT NULL
DROP FUNCTION DBO.SPLIT_STR
GO
CREATE FUNCTION DBO.SPLIT_STR(
@S varchar(8000), --包含多个数据项的字符串
@INDEX int, --要获取的数据项的位置
@SPLIT varchar(10) --数据分隔符
)
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @SPLITLEN int
SELECT @SPLITLEN=LEN(@SPLIT+‘A‘)-2
WHILE @INDEX>1 AND CHARINDEX(@SPLIT,@[email protected])>0
SELECT @[email protected],@S=STUFF(@S,1,CHARINDEX(@SPLIT,@[email protected])[email protected],‘‘)
RETURN(ISNULL(LEFT(@S,CHARINDEX(@SPLIT,@[email protected])-1),‘‘))
END
GO
PRINT DBO.SPLIT_STR(‘AA|BB|CC‘,2,‘|‘)
--
GO

时间: 2024-10-16 13:56:11

sql 自定义函数返回中文,数字,英文的相关文章

sql自定义函数及C#中调用

1.在C#中调用sql自定义函数 1.1 标量值函数 sql语句调用 select  dbo.GetClassIDWithName(1) string strSql = string.Format("select dbo.GetClassIDWithName('{0}')",dtTime);DataTable dt = DB_Contrast.DB.OleDbHelper.GetDataTable(strSql); 1.2 表值函数 sql语句调用 select * from GetA

PHP自定义函数返回多个值

PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止. 有时要求函数返回多个值时,用return是不可以把值一个接一个地输出的. return语句可以返回任何类型的变量,这就是使自定义函数返回多个值的关键. 代码:  <?php function results($string) {      $result = array();      $result[] = $string;//原字符串     $result[] = strtoupper($

SQL自定义函数split分隔字符串

SQL自定义函数split分隔字符串 一.F_Split:分割字符串拆分为数据表 Create FUNCTION [dbo].[F_Split] ( @SplitString nvarchar(max), --源字符串 @Separator nvarchar(10)=' ' --分隔符号,默认为空格 ) RETURNS @SplitStringsTable TABLE --输出的数据表 ( [id] int identity(1,1), [value] nvarchar(max) ) AS BE

SQL自定义函数function

https://blog.csdn.net/qq_23833037/article/details/53170789 https://www.cnblogs.com/youring2/p/4916400.html 用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回. sql函数必须有返回值. ps: 函数看成一个处理某些数据的功能,因有返回值,则在代码使用中,需要一个处理过的数据. 可直接调用函数处理数据,返回数据给代码使用. 标量函数:返回一个标量值. 表格值函数{内联表

SQL 自定义函数(Function)——参数默认值

sql server 自定义函数分为三种类型:标量函数(Scalar Function).内嵌表值函数(Inline Function).多声明表值函数(Multi-Statement Function) 标量函数:标量函数是对单一值操作,返回单一值. 内嵌表值函数:内嵌表值函数的功能相当于一个参数化的视图.它返回的是一个表,内联表值型函数没有由BEGIN-END 语句括起来的函数体. 多声明表值函数:它的返回值是一个表,但它和标量型函数一样有一个用BEGIN-END 语句括起来的函数体,返回值

PL/SQL自定义函数

从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数据类型,而非PL/SQL特殊的类型 从SQL表达式中调用的函数不能包含DML语句 从在表T上的UPDATE/DELETE语句中调用的函数,函数内容不能包含在同一个表T上的DML 从在表T上的UPDATE或DELETE语句中调用的函数,函数内容不能查询同一个表 从SQL语句中调用的函数不能包含结束事物

ORACLE创建自定义函数返回varchar类型

需求描述:两张表,如下,需要查询tmp1表中id_new在tmp2中的nameselect from tmp1; select from tmp2;方法一:好处:简单,直接sql展示劣处:如果主表数据量太大,十几亿的话,性能会大大下降,此时建议第二种方法select a.id_old,to_char(wm_concat(distinct a.id_new)) id_new,to_char(wm_concat(distinct b.name)) namefrom tmp2 b,(select a.

第八讲 python自定义函数返回值

注意自定义函数:统一文件内函数名称不能相同. 单返回值 语法结构: def function_name([para1,para2...]) code... code... ... return value--------------可以返回一个值 eg: def test_c(n1,n2):-------------函数定义    n=n1+n2    return n sum1=test_c(100,102)----------函数调用----最好不要用sum,因为sum为关键字print '

sql 自定义函数--固定格式字符转时间类型

遇到一个德国的客户,他们的时间格式是JJJJ-TT-DD HH:MM:SS,程序按照这个格式将时间插入数据库,但是在sql自带的转换函数convert.cast过程中报错,网上搜了下都说用convert.cast可以直接转换,但是这个客户的机器就是不行,没有办法自己写了个转换函数,供大家参考: 由于自定义函数里面不能直接使用getdate方法:所以先创建了个获取本地时间的小函数: create view v_getdate as select getdate() as now_date 然后是转