SqlServer获取字符串中数字,中文及字符部分数据

摘要:
--获取英文字符数据Createfunction[dbo].[Fun_GetChar](@Novarchar(100))RETURNSvarchar(100)ASBEGINWHILEPATINDEX('%[^A-Za-z]%',@No)˃0BEGINSET@No=STUFF(@No,PATINDEX('%[^A-Za-z]%',@No),1,'')--删掉一个非数字的字符,循环结束,剩余的为数字部
--获取英文字符数据
Create function [dbo].[Fun_GetChar]
(
@No varchar(100)
)
RETURNS varchar(100)
AS
BEGIN
WHILE PATINDEX('%[^A-Za-z]%',@No)>0
BEGIN
SET @No=STUFF(@No,PATINDEX('%[^A-Za-z]%',@No),1,'') --删掉一个非数字的字符,循环结束,剩余的为数字部分
END
RETURN CONVERT(varchar(100),@No)
END
--select dbo.F_GetChar('2.5mg')--调用函数=mg
--获取数值数据
Create FUNCTION [dbo].[Fun_GetNum]
( @Str NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
    BEGIN
        DECLARE @Start INT;
        DECLARE @End INT; 
        DECLARE @Part NVARCHAR(MAX)
        SET @Start = PATINDEX('%[.,0-9]%', @Str);
        SET @End = PATINDEX('%[.,0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));
        SET @Part = SUBSTRING(@Str,@Start,1) 
        WHILE  @End >0 
        BEGIN 
                SET @Start = @start+@End
                SET @Part = @Part+SUBSTRING(@Str,@Start,1)       
                SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start)); 
        END
        RETURN  @Part;
    END;
--select dbo.[Fun_GetNumPart]('2.5mg')--调用函数=2.5
--获取中文数据
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=left(@str,1) 
if unicode(@word) between 19968 and 40869 
set @CN=@CN+@word 
set @str=right(@str,len(@str)-1) 
end 
return @CN 
end 
GO 
--select dbo.fun_getCN('2.5mg,毫克')--毫克

免责声明:文章转载自《SqlServer获取字符串中数字,中文及字符部分数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解析几何求交之直线与二次曲面Java基础__Integer类型中的自动装箱下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

golang 高效字符串拼接

https://blog.csdn.net/u012210379/article/details/45110705 虽然方便,但是使用+=操作符并不是在一个循环中往字符串末尾追加字符串最有效的方式,一个有效的方式是准备好一个字符串切片([]string),然后使用strings.Join()函数一次性将所有字符串串联起来。但是在go中还有一个更好的方法,其...

二十、oracle pl/sql基础

一、pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品。 二、pl/sql介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还 要掌握pl/sql语句及语法规则。pl/sql编程可以使用变量和逻辑控制语句,从...

STM32CubeIDE+FreeRTOS消息队列实验

新建工程RTOS_Message,配置如下: Ctrl + S生成代码 修改代码, 1,在main.h中添加 //添加include/*Private includes ----------------------------------------------------------*/ /*USER CODE BEGIN Includes */#in...

shell分享

shell脚本分享 一、介绍shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业...

(转)string中的format

JDK1.5中,String类新增了一个很有用的静态方法String.format():format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式...

DataTable需要注意点整理

获取两个DataTable的交集(Intersect:返回同时出现在两个表中的数据)          var dt3=dt1.AsEnumerable().Intersect(dt2.AsEnumerable(), DataRowComparer.Default).CopyToDataTable();获取DataTable的并集(Union 方法返回这...