sql-server - 在 SQL Server 中将包含阿拉伯字符的 Unicode 字符串转换为 ASCII

标签 sql-server tsql unicode

如何将字符串'1394'转换为'1394'

我尝试更改排序规则但不起作用。

请注意,我在 C# 中从外部设备读取数据。

最佳答案

我在网上搜索后尝试解决问题,我得出的结论是解决这个问题的最好方法是函数

ALTER FUNCTION [dbo].[udf_ReplaceArabicNumbers]
    (@str NVARCHAR(1000))
    RETURNS NVARCHAR(2000)
AS
BEGIN

    DECLARE @i INT = 1
    WHILE @i<=LEN(@str)

    BEGIN
        DECLARE @val NVARCHAR(1)
        SET @val = SUBSTRING(@str, @i, 1)
            DECLARE @newchar NVARCHAR(1)
            SET @newchar = CASE(@val)
                    WHEN N'۱' THEN 1
                    WHEN N'۲' THEN 2
                    WHEN N'۳' THEN 3
                    WHEN N'۴' THEN 4
                    WHEN N'۵' THEN 5
                    WHEN N'۶' THEN 6
                    WHEN N'۷' THEN 7
                    WHEN N'۸' THEN 8
                    WHEN N'۹' THEN 9
                    WHEN N'۰' THEN 0
                END
        SET @str = REPLACE(@str, @val, @newchar)
        SET @i+=1;
    END

RETURN @str
END

并调用这个函数

select [dbo].[udf_ReplaceArabicNumbers] (N'۱۳۹۴')

我推荐这个网站 http://unicode-table.com/en/UNICODE 的帮助下,我们可以获得 HTML-Code 并在我们的程序中使用

select  '&#' + cast (UNICODE(N'۱')as nvarchar(10)) + ';',
        '&#' + cast (UNICODE(N'۳')as nvarchar(10)) + ';',
        '&#' + cast (UNICODE(N'۹')as nvarchar(10)) + ';',
        '&#' + cast (UNICODE(N'۴')as nvarchar(10)) + ';'

结果是

enter image description here

关于sql-server - 在 SQL Server 中将包含阿拉伯字符的 Unicode 字符串转换为 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31634386/

相关文章:

c# - 使用 t4 模板在运行时生成内存中的 SQL

tsql - 如何将一行反向旋转成两行?

c# - 在 ASP.Net Core 3.1 中等待 SqlClient 调用的最佳方法

sql - 如何 "create table as (select * from)"

sql - 表格驱动的付款时间表

javascript - 何时使用或不使用 toLocale 方法?

html - 如果用户没有字体,如何在网站上显示缅甸字符并将其记录在MySQL中?

python - 将 Unicode 代码点数字转换为 Unicode 字符

sql-server - 为什么这个 SSIS 包抛出转换错误?

具有 SQL 架构的 ASP.NET 成员(member)资格提供程序