Страница 1 из 1

Реализация проверки на русский ввод в PSQL

Добавлено: 31 авг 2006, 10:08
gvy
Хочу избавиться от UDF. Там есть функция, которая проверяет строку на отсутствие латинских букв
(что буквы только русские). Вызывается она из ограничения check для колонок.
Может кто подскажет, как это же эффективно реализовать в PSQL?
Вот исходник. Заранее благодарю.

Код: Выделить всё

/*
        Возвращает false, если строка содержит латинские(ASCII) буквы.
*/
NB_UDF_API bool nb_udf_is_native( const char *s )
{
        if ( !s )
                return true;

        for( ; *s; s++ ) {
                if ( iscntrl(*s) || isascii(*s) && !( isdigit(*s) || isspace(*s) || ispunct(*s) ) )
                        return false;
        }

        return true;
}
модератор: люди, пользуйтесь тэгом code !!!

Добавлено: 31 авг 2006, 11:06
Dimitry Sibiryakov
Эффективно - никак.

Добавлено: 31 авг 2006, 11:50
mdfv
А если очень надо, то можно и извращенским способом

Код: Выделить всё

i=1;
nerus=0;
while (i<=Char_length(stroka)) do
 begin
 ch=substring(stroka from i for 1);
 if (not(((ch>='А')and(ch<='Я'))or((ch>='а')and(ch<='я'))or(ch=' '))) then begin
                                                        nerus=1;
                                                        leave;
                                                        end

 i=i+1;
 end