4

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

0123456789

以其他字母形式给出 SQL Server 数字是否有效?

罗塞塔石碑:

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

我知道客户端(ADO)将使用当前文化将 8 位字符串转换为 16 位 unicode 字符串。但是客户也在使用他们当前的文化将数字转换为字符串,例如:

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

这使 SQL Server 适合。

我知道服务器/数据库有它定义的代码页和语言环境,但那是字符串。

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

4

1 回答 1

3

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

ISNUMERIC() 和 CAST() 都不能成功测试这些数字,因此使用这些字符的数字常量也不起作用。

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

于 2010-03-23T16:18:56.543 回答