Обсуждение: Are SQL queries locale dependent?

Поиск
Список
Период
Сортировка

Are SQL queries locale dependent?

От
Martin Schäfer
Дата:
Hi,

I recently found out that my app doesn't work in Spain because it creates localized queries like this:

create table t (c1 float8, c2 float8);
insert into t (c1, c2) values (3,14159, 1,4142);

I understand that PostgreSQL obviously can't parse this query. But I'm not sure how to fix this query so that it works
underall circumstances. 

If the database uses the "C" (or e.g. English or US) locale, then I know that I always have to use the decimal dot
('.')instead of a decimal comma (','), regardless of the locale of the client machine. 

But what if the database itself uses a locale which mandates a decimal comma, like Spanish, German, etc.? How do I have
toconstruct the SQL query then? 

Martin

Re: Are SQL queries locale dependent?

От
Tom Lane
Дата:
=?iso-8859-1?Q?Martin_Sch=E4fer?= <Martin.Schaefer@cadcorp.com> writes:
> I recently found out that my app doesn't work in Spain because it creates localized queries like this:

> create table t (c1 float8, c2 float8);
> insert into t (c1, c2) values (3,14159, 1,4142);

> I understand that PostgreSQL obviously can't parse this query. But I'm not sure how to fix this query so that it
worksunder all circumstances. 

Use dots.  The SQL syntax for a number is not locale-dependent.

            regards, tom lane