--[提取中文] IF OBJECT_ID('dbo.fun_getCN') IS NOT NULL DROP FUNCTION dbo.fun_getCN GO create function dbo.fun_getCN(@str varchar(4000)) returns varchar(4000) as begin declare @word nchar(1),@CN varchar(4000) set @CN='' while len(@str)>0 begin set @word=l
IF OBJECT_ID('DBO.GET_ZNSTR') IS NOT NULLDROP FUNCTION DBO.GET_ZNSTRGOCREATE FUNCTION DBO.GET_ZNSTR(@S NVARCHAR(100))RETURNS VARCHAR(100)ASBEGINWHILE PATINDEX('%[^吖-座]%',@S) > 0SET @S = STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')RETURN @SENDGO-----------
create function dbo.F_Get_No ( @No varchar(100) ) RETURNS bigint AS BEGIN WHILE PATINDEX('%[^0-9]%',@No)>0 BEGIN SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'') --删掉一个非数字的字符,循环结束,剩余的为数字部分 END RETURN CONVERT(bigint,@No) END 此函数可以返回某字符串中的数字部分 PATINDEX
要查找某个指定的字符在字符串中出现的位置,方法比较简单,使用 len() 函数和 replace() 函数结合就可以. SELECT TOP 200 approveInfo approveInfo2, LEN(approveInfo)-LEN(REPLACE(approveInfo,';','')) AS appLen, * FROM dbo.Log_Year WHERE ISNULL(approveInfo,'')<>'' ORDER BY appLen DESC 原理:字符串的长度 减去
今天公司项目中遇到了一个需求,要求提取用户电话号码字段中的所有电话信息. 由于该字段在项目最初设计中没有严格控制数据质量,导致用户在输入时包含了很多非电话的信息,如用户名字等(136 **** **** 张san) 要求提取出当中的136******** 思路:创建函数,依次判断每个字符的ASCII码是否在[0,9]中,提取该部分内容. Create Function USF_ExtractNumeric ( ) ) ) AS Begin ) Set @outputStr = '' Begin
CREATE FUNCTION [dbo].[StringExtractNumber(FirstOrLast)](@address nvarchar(max),@firstOrLast INT) returns INT as BEGIN DECLARE @returnInt VARCHAR(20) IF @firstOrLast=1 SET @returnInt= REVERSE(SUBSTRING( STUFF(reverse(@address),1,PATINDEX('%[0-9]%',re
今天调整一个同事的需求时,要计算一个含税金额.报表内已经取到税率,但存在的形式是字符串格式:16%. 正好SAP内有一个标准函数:PREPARE_STRING 可以处理字符串,将特别标志替换为有效标志.通过函数只保留数字,再转换成整数,再进行后续运算. ) TYPE c. DATA tax_rate TYPE I. tax_rate_char = ' 16%'. CALL FUNCTION 'PREPARE_STRING' EXPORTING i_valid_chars = ' 01234567