SQL Server 2012是否具有将包含ASCII的varchar列转换为纯文本的函数或其他方法?

SQL Server 2012是否具有将包含ASCII的varchar列转换为纯文本的函数或其他方法?,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我继承了一个数据库表,它有一个包含ASCII数字的nvarchar(MAX)列。我需要转换并用纯文本替换它们。这是否可以使用SQL函数实现 发件人: 034 067 111 110 118 101 114 116 032 077 101 044 032 068 097 114 110 032 105 033 033 034 致: “皈依我吧,该死的!!” 感谢所有测试数据 查询 测试数据 查询 测试数据 查询 测试数据 查询 解决方案(无split功能): 解决方案(无split功能): 解决方

我继承了一个数据库表,它有一个包含ASCII数字的nvarchar(MAX)列。我需要转换并用纯文本替换它们。这是否可以使用SQL函数实现

发件人:

034 067 111 110 118 101 114 116 032 077 101 044 032 068 097 114 110 032 105 033 033 034

致:

“皈依我吧,该死的!!”

感谢所有测试数据 查询 测试数据 查询 测试数据 查询 测试数据 查询 解决方案(无
split
功能):

解决方案(无
split
功能):

解决方案(无
split
功能):

解决方案(无
split
功能):


另一种剥猫皮的方法:

SELECT CAST(x AS nvarchar(max))
FROM @TABLE
CROSS APPLY (
  SELECT TOP(1+LEN(ASCII_Col)/4)
    CHAR(SUBSTRING(ASCII_Col,ROW_NUMBER() OVER(ORDER BY (SELECT 1))*4-3,3))
  FROM master.dbo.spt_values
  FOR XML PATH(''),TYPE
) t(x)

另一种剥猫皮的方法:

SELECT CAST(x AS nvarchar(max))
FROM @TABLE
CROSS APPLY (
  SELECT TOP(1+LEN(ASCII_Col)/4)
    CHAR(SUBSTRING(ASCII_Col,ROW_NUMBER() OVER(ORDER BY (SELECT 1))*4-3,3))
  FROM master.dbo.spt_values
  FOR XML PATH(''),TYPE
) t(x)

另一种剥猫皮的方法:

SELECT CAST(x AS nvarchar(max))
FROM @TABLE
CROSS APPLY (
  SELECT TOP(1+LEN(ASCII_Col)/4)
    CHAR(SUBSTRING(ASCII_Col,ROW_NUMBER() OVER(ORDER BY (SELECT 1))*4-3,3))
  FROM master.dbo.spt_values
  FOR XML PATH(''),TYPE
) t(x)

另一种剥猫皮的方法:

SELECT CAST(x AS nvarchar(max))
FROM @TABLE
CROSS APPLY (
  SELECT TOP(1+LEN(ASCII_Col)/4)
    CHAR(SUBSTRING(ASCII_Col,ROW_NUMBER() OVER(ORDER BY (SELECT 1))*4-3,3))
  FROM master.dbo.spt_values
  FOR XML PATH(''),TYPE
) t(x)

你用谷歌搜索过SQL字符串函数吗?该函数将一个ASCII数字转换为一个字符,但你需要将字符串拆分为标记,并将每个标记转换。我的哀悼。知道为什么ASCII码保存在Unicode列中而不是文本本身吗?无论如何,
CHAR
函数将返回与ASCII字符相对应的字符,但您需要首先拆分字符串感谢stuart和panagiotis,这对我很有用。您搜索过SQL字符串函数吗?该函数将单个ASCII数字转换为字符,但你需要将字符串拆分为令牌,然后将每个令牌转换。我的哀悼。知道为什么ASCII码保存在Unicode列中而不是文本本身吗?无论如何,
CHAR
函数将返回与ASCII字符相对应的字符,但您需要首先拆分字符串感谢stuart和panagiotis,这对我很有用。您搜索过SQL字符串函数吗?该函数将单个ASCII数字转换为字符,但你需要将字符串拆分为令牌,然后将每个令牌转换。我的哀悼。知道为什么ASCII码保存在Unicode列中而不是文本本身吗?无论如何,
CHAR
函数将返回与ASCII字符相对应的字符,但您需要首先拆分字符串感谢stuart和panagiotis,这对我很有用。您搜索过SQL字符串函数吗?该函数将单个ASCII数字转换为字符,但你需要将字符串拆分为令牌,然后将每个令牌转换。我的哀悼。知道为什么ASCII码保存在Unicode列中而不是文本本身吗?无论如何,
CHAR
函数将返回与ASCII字符相对应的字符,但您需要首先拆分字符串。感谢stuart和panagiotis,这对我很有用。感谢大家的帮助!感谢大家的帮助!感谢大家的帮助!感谢大家的帮助!
OUTPUT:
----------------------
"Convert Me, Darn it!!"
SELECT CAST(x AS nvarchar(max))
FROM @TABLE
CROSS APPLY (
  SELECT TOP(1+LEN(ASCII_Col)/4)
    CHAR(SUBSTRING(ASCII_Col,ROW_NUMBER() OVER(ORDER BY (SELECT 1))*4-3,3))
  FROM master.dbo.spt_values
  FOR XML PATH(''),TYPE
) t(x)