SQL服务器是否期望使用拉丁字母表中的数字指定数字,例如:
0123456789
在其他字母表中提供SQL Server数字是否有效?
Rosetta Stone:
Latin: 01234567890
Arabic: ٠١٢٣٤٥٦٧٨٩
Bengali: ০১২৩৪৫৬৭৮৯
我知道客户端(ADO)将使用当前文化将8位字符串转换为16位unicode字符串。但客户端也使用他们当前的文化将数字转换为字符串,例如:
SELECT * FROM Inventory
WHERE Quantity > ২৩৪,৭৮
这会使SQL Server失败。
我知道服务器/数据库有它定义的代码页和语言环境,但这是用于字符串的。
SQL Server是使用活动(或指定的每个登录)语言环境解释数字,还是必须使用拉丁数字数字指定所有数值?
答案 0 :(得分:3)
据我所知,T-SQL需要拉丁数字,小数点指定为.
。
ISNUMERIC()和CAST()都不能成功测试这些数字,因此使用这些字符的数字常量也不起作用。
允许客户端传递非拉丁数字听起来非常混乱(我不确定您的数据传输路径,但是如果用户的本地化输入未被测试为数字,则似乎有可能进行SQL注入。