SQL Server 是否期望用拉丁字母中的数字指定数字,例如:
0123456789
用其他字母表示 SQL Server 数字是否有效?
罗塞塔石碑:
Latin: 01234567890
Arabic: ٠١٢٣٤٥٦٧٨٩
Bengali: ০১২৩৪৫৬৭৮৯
我知道客户端 (ADO) 将使用当前区域性将 8 位字符串转换为 16 位 unicode 字符串。但客户端也使用其当前的文化将数字转换为字符串,例如:
SELECT * FROM Inventory
WHERE Quantity > ২৩৪,৭৮
这让 SQL Server 很不舒服。
我知道服务器/数据库有其定义的代码页和区域设置,但那是针对字符串的。
SQL Server 是否会使用事件的(或每次登录指定的)区域设置来解释数字,还是必须用拉丁数字指定所有数值?
最佳答案
据我所知,T-SQL 需要拉丁数字,并将小数点指定为 .
。
ISNUMERIC() 和 CAST() 都无法成功测试这些数字,因此使用这些字符的数字常量也不起作用。
允许客户端传递非拉丁数字听起来很危险,混杂(我不确定数据传输的路径,但如果用户的本地化输入未经过数字测试,则似乎存在 SQL 注入(inject)的可能性。
关于sql-server - SQL Server : Must numbers all be specified with latin numeral digits?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2501487/