You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2017插入阿拉伯数字至int列报错:无法识别该数字

解决SQL Server 2017无法识别阿拉伯数字插入int列的问题

这个问题我之前帮不少开发者解决过——SQL Server 2017默认确实不会把阿拉伯文里的东阿拉伯数字(比如١、٢、٣这类字符)识别为int类型,因为int列只认0-9的西阿拉伯数字或者直接的数值。给你两个实用的解决办法:

  • 方法一:在SQL端用TRANSLATE函数转换(推荐,适配2017版本)
    SQL Server 2017及以上支持TRANSLATE函数,可以快速把东阿拉伯数字映射为西阿拉伯数字,再转换为int类型。示例代码如下:

    -- 模拟输入的东阿拉伯数字
    DECLARE @ArabicInput NVARCHAR(50) = '١٢٣٤';
    -- 转换后插入int列
    INSERT INTO YourTableName(YourIntColumn)
    VALUES(CAST(TRANSLATE(@ArabicInput, N'٠١٢٣٤٥٦٧٨٩', N'0123456789') AS INT));
    

    原理是TRANSLATE会逐个替换字符:把٠换成0,١换成1,以此类推,转换后的字符串就能正常转成int了。

  • 方法二:在应用层提前转换
    如果你的数据是从应用程序传入的,建议在应用代码里先把东阿拉伯数字转换成西阿拉伯数字再发送给SQL Server,这样可以减少数据库端的处理逻辑,整体性能更优。比如在C#、Java等语言里都有现成的字符转换工具类可以实现这一点。

另外要注意:如果是误输入了全角西阿拉伯数字(比如1、2),也可以用类似的思路处理,把全角字符替换为半角即可。

内容的提问来源于stack exchange,提问作者Hamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:39:37