tsql - 转换Varchar成Ascii

标签 tsql ssrs-2008

我正在尝试将VARCHAR字段的内容转换为可以被第三方轻松引用的唯一数字。

如何将varchar转换为等效的ascii字符串?在TSQL中? ASCII()函数可转换单个字符,但如何转换整个字符串呢?

我试过使用

CAST(ISNULL(ASCII(Substring(RTRIM(LTRIM(PrimaryContactRegion)),1,1)),'')AS VARCHAR(3))
+ CAST(ISNULL(ASCII(Substring(RTRIM(LTRIM(PrimaryContactRegion)),2,1)),'')AS VARCHAR(3))

....但是这看起来很乏味,愚蠢,而且如果我的弦长了,那实际上是行不通的。或者,如果更好,我将如何在SSRS中做同样的事情?

最佳答案

尝试这样的事情:

DECLARE @YourString   varchar(500)

SELECT @YourString='Hello World!'

;WITH AllNumbers AS
(
    SELECT 1 AS Number
    UNION ALL
    SELECT Number+1
        FROM AllNumbers
        WHERE Number<LEN(@YourString)
)
SELECT
       (SELECT
            ASCII(SUBSTRING(@YourString,Number,1))
            FROM AllNumbers
            ORDER BY Number
            FOR XML PATH(''), TYPE
       ).value('.','varchar(max)') AS NewValue
       --OPTION (MAXRECURSION 500) --<<needed if you have a string longer than 100

输出:
NewValue
---------------------------------------
72101108108111328711111410810033

(1 row(s) affected)

只是测试一下:
;WITH AllNumbers AS
(
    SELECT 1 AS Number
    UNION ALL
    SELECT Number+1
        FROM AllNumbers
        WHERE Number<LEN(@YourString)
)
SELECT SUBSTRING(@YourString,Number,1),ASCII(SUBSTRING(@YourString,Number,1)),* FROM AllNumbers

输出:
                 Number
---- ----------- -----------
H    72          1
e    101         2
l    108         3
l    108         4
o    111         5
     32          6
W    87          7
o    111         8
r    114         9
l    108         10
d    100         11
!    33          12

(12 row(s) affected)

另外,您可能要使用此命令:
RIGHT('000'+CONVERT(varchar(max),ASCII(SUBSTRING(@YourString,Number,1))),3)

强制将所有ASCII值转换为3位数字,根据您的使用情况,我不确定是否有必要这样做。

每个字符使用3位数字输出:
NewValue
-------------------------------------
072101108108111032087111114108100033

(1 row(s) affected)

关于tsql - 转换Varchar成Ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4492205/

相关文章:

ssrs-2008 - ssrs表达式拆分字符串可能吗?

sql-server-2005 - Microsoft SQL xp_cmdshell 不喜欢带有空格的文件名。我可以用别的东西代替空格吗?

sql - 不明确的列名错误,如何修复?

tsql - 如何从 CTE 调用带参数的存储过程(无光标)

sql - SSRS组头表达式

ssrs-2008 - 隐藏重复行 SSRS 2008 R2

sql-server - 你如何维护大型 t-sql 程序

sql - 在 T-SQL 中查找开始和结束日期(基于设置)

sql-server - SSRS 2008 修复行标题

sql - SSRS - 获取记录范围内的组总数