Мы столкнулись именно с этой проблемой, когда собирали запросы для нашего продукта с использованием DB2.
У нас был запрос в следующем формате:
select fn (COLUMN_NAME,5.2) from TABLE_NAME
и 5.2
фактически был вставлендинамически с помощью нашего программного обеспечения, основанного на выборе пользователя (на данный момент забудьте о инъекционных атаках, они были предотвращены с помощью других средств).
В местах, где «пять и две десятые» были записаны как 5,2
(чертЕвропейцы), мы получили:
select fn (COLUMN_NAME,5,2) from TABLE_NAME
, на что DB2 горько жаловалась.
Решение, данное IBM, заключалось в том, чтобы запятая разделитель имела пробелыстороны и десятичные запятые не:
select fn (COLUMN_NAME , 5,2) from TABLE_NAME
Но вы обнаружите, что многие языки решают эту проблему в точно не дружественным образом, о котором вы упомянули.Ни один из стандартов, подобных ISO C (ну, во всяком случае, ни одного из известных мне), не позволяет объявлять постоянное число как 5,2
, несмотря на тот факт, что ISO во многом является «интернационализированной» организацией.Они также не требуют, чтобы ключевые слова, такие как if
, while
и for
были локализованы на арабский, монгольский или клингонский: -)