Re: Prevent characters not transposable to LATIN9

Поиск
Список
Период
Сортировка
От Arnaud Lesauvage
Тема Re: Prevent characters not transposable to LATIN9
Дата
Msg-id 4C2D82E0.5020303@codata.eu
обсуждение исходный текст
Ответ на Re: Prevent characters not transposable to LATIN9  (Sam Mason <sam@samason.me.uk>)
Список pgsql-general
Le 1/07/2010 17:12, Sam Mason a écrit :
> On Thu, Jul 01, 2010 at 04:53:51PM +0200, Arnaud Lesauvage wrote:
>>  Le 1/07/2010 16:48, Sam Mason a écrit :
>>>  How about using the built in character conversion routines.  Something
>>>  like:
>>>
>>>     col = convert_from(convert_to(col, 'LATIN9'),'LATIN9')
>>>
>>>  as the check constraint, or its inverse as the where clause for the
>>>  erroneous rows?
>>
>>  What happens then for a character that does not have an equivalent in
>>  LATIN9 ?
>>  If an error is raised in the check constraint, does it look like a
>>  normal check error ?
>
> Yoik, didn't think about how it would actually handle the conversion!
> It appears to throw an exception, so you probably want to bundle it up
> in a pl/pgsql function that catches it and does the "right thing" for
> you.  Maybe something like:
>
>    CREATE FUNCTION isstringrepresentable(str TEXT, charset TEXT) RETURNS BOOLEAN AS $$
>      BEGIN
>        RETURN str = convert_from(convert_to(str, charset),charset);
>      EXCEPTION WHEN OTHERS THEN
>        RETURN FALSE;
>      END
>    $$ LANGUAGE plpgsql IMMUTABLE;

Yep, I'll give it a try as soon as I find some time !

Thanks for the hint.

В списке pgsql-general по дате отправления:

Предыдущее
От: Stephen Denne
Дата:
Сообщение: Help with pgAndroid Contest
Следующее
От: "Wappler, Robert"
Дата:
Сообщение: Re: Uncable to commit: transaction marked for rollback