• 字符编码相关函数


    use TEST
    go
    
    --获取ASCII码对应的字符CHAR 
    --如果是INT 数据类型的ASCII码,可以通过CHAR函数获得该ASCII码对应的字符 
    
    --CHAR(integer_expression) 这里是返回0-255之间的整数表达式,返回值为CHAR类型字符
    /*
    DECLARE @BeginPosition int 
    declare @TempString varchar(100)
    set @BeginPosition = 1
    set @TempString = 'dancewithwave@163.com'
    WHILE @BeginPosition < = DATALENGTH(@TempString)
        BEGIN
        SELECT ASCII(SUBSTRING(@tempstring , @beginPosition , 1 )) as 'ASCII码',
            CHAR (ASCII(SUBSTRING(@tempstring , @beginPosition , 1 )) ) as '字符'
        SET @BeginPosition=@BeginPosition+1
        END
    GO
    
    */
    
    
    --获取字符的Unicode编码UNICODE
    Unicode(统一字符编码标准)主要用于支持非英语语种的字符型数据,采用两个字节来存储一个字符。
    在定义和使用Unicode字符型数据时,需要加入前导标识符N,当向表中录入Unicode字符时并不会存储该标识符
    Unicode函数可以获得字符的Unicode编码
    
    ----语法:
    UNICODE('ncharacter_expression') 这里的ncharacter_expression 是nchar 或者nvarchar类型的表达式,
    函数仅会返回第一个字符的Unicode编码 ,返回类型为INT数据类型
    
    
    DECLARE @BeginPosition int 
    declare @NTempString Nvarchar(100)
    set @BeginPosition = 1
    set @NTempString = N'dancewithwave@163.com'
    WHILE @BeginPosition < = DATALENGTH(@NTempString)
        BEGIN
        SELECT
            @BeginPosition AS '序号', 
            CONVERT ( CHAR(17), SUBSTRING(@NTempString , @beginPosition , 1 ) ) as 'ASCII码',
            UNICODE (SUBSTRING(@NTempString , @beginPosition , 1 ) ) as '字符'
        SET @BeginPosition=@BeginPosition+1
        END
    GO
    
    
    --获取Unicode编码对应的字符NCHAR
    
    /*
    NCHAR函数根据Unicode标准的定义,返回具有指定的整数代码Unicode字符
    NCHAR (INTEGER_EXPRESSION) 这里的INTEGER_EXPRESSION是介于0-65535之间的正整数,超出该值将返回错误。
    返回值为UNicode字符
    */
    
    
    DECLARE @BeginPosition int 
    declare @NTempString Nvarchar(100)
    set @BeginPosition = 1
    set @NTempString = N'dancewithwave@163.com'
    WHILE @BeginPosition < = DATALENGTH(@NTempString)
        BEGIN
        SELECT
            @BeginPosition AS '序号', 
    
            NCHAR(UNICODE (SUBSTRING(@NTempString , @beginPosition , 1 ) ) ) as 'NCHAR 函数获得的字符',
             CONVERT ( CHAR(17), SUBSTRING(@NTempString , @beginPosition , 1 ) ) as 'COUNVER 函数强制转换获得的字符',
            UNICODE (SUBSTRING(@NTempString , @beginPosition , 1 ) ) as  'Unicode编码'
        SET @BeginPosition=@BeginPosition+1
        END
    GO
    
    
    --获取字符串第一次出现位置PATINDEX
    PATINDEX :返回指定表达式中某模式第一次出现的起始位置,如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零
    
    PATINDEX('%pattern%' , expression)
    如果是EXPRESSION的数据类型为 VARCHAR(MAX) 或者 NVARCHAR(MAX)则为BIGINT ,
    否则为INT 即PATTERN指定的字符串在EXPRESSION中第一次出现的位置 
    
    EG:
    select top 10 PATINDEX('%35%',a.Name),* from dbo.TEST  as a with(nolock)
    
    --生成空格字符SPACE
    SPACE 函数可以生成任意多个空格组成的字符串
    SPACE( INEGER_EXPRESSION ) 这里的INEGER_EXPRESSION为指示空格个数的正整数。
    如果是要在Unicode数据中包含空格超过8000个以上的空格,需要使用REPLICATE函数
    返回CHAR 数据类型的字符
    
    USE TEST
    GO
    
    SELECT customerid,RTRIM(customerid) + ',' + SPACE(4) + LTRIM(city) FROM Customers
    
    --按指定次数重复生成字符串REPLACE 
    REPLACE 函数可以按照指定的整数次数,重复生成一个字符串形式的表达式,结果为字符串.
    语法结构 REPLACE( CHARACTER_EXPRESSION , INTEGER_EXPRESSION )
    
    
    
    --截取子串SUBSTRING
    SUBSTRING 函数可以字符串进行子串的截取操作
    SUBSTRING ( EXPRESSION , START ,LENGTH )  
    如果EXPRESSION是受支持的字符数据类型,则返回字符数据
    如果EXPRESSION是受支持的BINARY数据类型,则则返回二进制数据
    
    
    --获取字符串长度LEN
    LEN函数获取字符串的长度(字符数),但不包括右边的空格,左边的空格和中间的空格计算在内
    LEN( STRING_EXPRESSION )
    
    --测试空格在不同位置时返回的字符
    DECLARE @TempString  varchar(100)
    DECLARE @TempString1 varchar(100)
    declare @tempString2 varchar(100)
    declare @tempString3 varchar(100)
    
    --不包含空格的字符串
    SET @TempString = 'dancewithwave@163.com'
    
    --左边有个空格的字符串
    SET @TempString1 =  ' dancewithwave@163.com'
    
    --右边有个空格的字符串
    SET @tempString2 =  'dancewithwave@163.com '
    
    --左右都有两个空格的字符串
    SET @tempString3 =  ' dancewithwave@163.com '
    
    SELECT LEN(@TempString)
    SELECT LEN(@TempString1)
    SELECT LEN(@tempString2)
    SELECT LEN(@tempString3)
     
    
    --替换字符串中内容STUFF
    --STUFF函数用于在指定的字符串中删除指定长度的字符,并在起点处插入另外一组字符
    STUFF (Source_character_expression ,    START , LENGTH , Destination_character_expression)
    
    --返回值,如果character_expression是受支持的字符数据类型,则返回字符数据。
    如果character_expression是一个受支持的binary数据类型,则返回二进制数据
    
    SELECT STUFF('dancewithwave@163.com' , 1 , 13 , 'zhaosongtao' )
    
    /*
    指定位置搜索字符串中内容charindex
    charindex函数用于在指定字符串中搜索特定的字符串,并可以指定开始搜索的位置,则返回第一次目标字符串的字符数。
    如果EXPRESSION2的数据类型为VARCHAR(MAX),NVARCHAR(MAX) 或者 VARBINARY(MAX) 则为BIGINT,否则为INT
    */
    
    DECLARE @SourceTempString varchar(200)
    declare @DestinationTempString varchar(200)
    SET @SourceTempString = 'AGDFGHEHJFGHWPEHNVDHG[ DSGDGDL ] DFGDKGHWEH[FWDFGWRG'
    SET @DestinationTempString='H'
    SELECT CHARINDEX(@DestinationTempString,@SourceTempString,1)
    
    /*生成带分隔符的Unicode字符串quotename 
    QUOTENAME函数用于生成带有分隔符的Unicode 字符串
    可以是单引号('),左方括号,或右方括号([])或者英文双引号(")
    */
    
    QUOTENAME('CHARACTER_STRING' [ , 'QUOTE_CHARACTER' ] )
    --生成带有分隔符的字符串长度不能超过258
    SELECT QUOTENAME('ABC[]DEF')
    
    /*
    STR函数用于将浮点数据转换为字符串
    STR(FLOAT_EXPRESSION[ , LENGTH ,[ , DECIMAL ]]) --CHAR 字长字符串
    */
    
    SELECT STR(123.457 , 7 ,3) + SPACE(2) + 'ABCD'
    
    载取左边字符串 LEFT
    载取右边字符串 RIGHT
    
    截取左边空格 LTRIM
    截取右边空格 RTRIM
    
    转换为小写字符串 LOWER
    转换为大写字符串 UPPER
    
    反序字符串 REVERSE
    获取字符串字符数 ( DATALENGTH )

    --摘自《t-sql管理与开发实例精粹》

  • 相关阅读:
    导入已有项目到svn
    Linux用ICMP协议实现简单Ping网络监测功能
    c++ tcp 服务器和客户端例子
    C++ Socket 编程
    c++工厂模式和多线程结合
    Linux中ls命令详解
    Mac OS X 11中的/usr/bin 的“Operation not permitted”
    Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)
    页面组件渲染小组件(重点)
    Vue 路由
  • 原文地址:https://www.cnblogs.com/zerocc/p/2540600.html
Copyright © 2020-2023  润新知