代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

SQL Server:必须用拉丁数字数字指定所有数字吗?

  •  4
  • Ian Boyd  · 技术社区  · 14 年前

    SQL Server是否希望使用拉丁字母中的数字指定数字,例如:

    0123456789
    

    用其他字母给SQL Server数字有效吗?

    罗塞塔石:

    Latin:   01234567890
    Arabic:  ٠١٢٣٤٥٦٧٨٩
    Bengali: ০১২৩৪৫৬৭৮৯
    

    我知道客户端(ADO)将使用当前区域性将8位字符串转换为16位Unicode字符串。但是客户端也在使用当前的区域性将数字转换为字符串,例如:

    SELECT * FROM Inventory
    WHERE Quantity > ২৩৪,৭৮
    

    这会引发SQL Server适配。

    我知道服务器/数据库有它定义的代码页和区域设置,但这是用于字符串的。

    SQL Server是使用活动(或按指定的登录名)区域设置解释数字,还是必须使用拉丁数字数字指定所有数值?

    1 回复  |  直到 14 年前
        1
  •  3
  •   richardtallent    14 年前

    据我所知,T-SQL需要拉丁数字,小数点指定为 . .

    isNumeric()和cast()都不能成功地测试这些数字,因此使用这些字符的数字常量也不能工作。

    允许客户机传递非拉丁数字听起来很危险(我不确定数据的传输路径,但如果用户的本地化输入没有被测试为数字,则可能存在SQL注入。