Тема
|
cyrilic Upper function
|
|
Автор | USER (Нерегистриран) |
Публикувано | 05.07.05 21:28 |
|
Има ли някой написана Upper функция която да работи с кирилица и да е за Postgresql а така също и lower.
|
|
Тема
|
Re: cyrilic Upper function
[re: USER]
|
|
Автор |
phpGuru (член) |
Публикувано | 06.07.05 13:34 |
|
стандартните функции upper/lower си работят, ето:
test=# select upper('абвцчшщъьюя');
upper
-------------
АБВЦЧШЩЪЬЮЯ
(1 row)
test=# select lower('АБВЦЧШЩЪЬЮЯ');
lower
-------------
абвцчшщъьюя
(1 row)
но, има уловка - настройките :-))
за съжаление при pg-то този вид настройки се прави още в началото на инициализирането на клъстер, а именно при initdb-то
ако може да пресъздадеш клъстера, решението е ясно :-)
initdb --locale bg_BG.UTF8
например
|
|
Тема
|
Re: cyrilic Upper function
[re: phpGuru]
|
|
Автор | USER (Нерегистриран) |
Публикувано | 06.07.05 13:51 |
|
Axaaaaaa......... Значи от там била цялата работа. Благодаря ти. Ще взема да си преоткрия клъстера. А пък аз докато виках неволята взех ,че си написах и една функция за първо време. Ако на някой му потрябва.....
CREATE OR REPLACE FUNCTION "cyrupper" (varchar) RETURNS varchar AS'
DECLARE
string ALIAS FOR $1;
temp_str varchar;
length integer;
temp_char varchar;
BEGIN
temp_str='''';
length:=char_length(string);
FOR i IN 1..length LOOP
temp_char:=substr(string,i,1);
IF ascii(temp_char)>=223 then
temp_char:=chr(ascii(temp_char)-32);
else
temp_char=upper(temp_char);
end if;
temp_str:=temp_str||temp_char;
END LOOP;
RETURN temp_str;
END;
'LANGUAGE 'plpgsql';
|
|
Тема
|
Re: cyrilic Upper function
[re: phpGuru]
|
|
Автор | null (Нерегистриран) |
Публикувано | 28.02.06 16:44 |
|
Добре,
ама ако вече имам създадена база и тя е с няколко стотин хиляди реда вече.
Как трябва да се процедира тогава?
|
|
Тема
|
Re: cyrilic Upper function
[re: null]
|
|
Автор |
phpGuru (ентусиаст) |
Публикувано | 28.02.06 19:55 |
|
за съжаление няма автоамтичен начин ....
варианта е dump -> iconv -> recreate cluster -> reload data
|
|
Тема
|
Re: cyrilic Upper function
[re: phpGuru]
|
|
Автор |
phpGuru (ентусиаст) |
Публикувано | 28.02.06 19:59 |
|
забравих и за варианта при който се стартира нов клъстер с правилните параметри и може да се пробва вариант нещо от сорта
pg_dump -h old_host | iconv -f windows-1251 -t UTF8 | psql -h new_host
(не гарантирам, че ще стане, ама не виждам и голяма причина с малки модификации да не стане)
|
|
Тема
|
Re: cyrilic Upper function
[re: phpGuru]
|
|
Автор | mutant (Нерегистриран) |
Публикувано | 01.03.06 10:24 |
|
точно така е както казва гуруто правих тази операция онзи ден базата беше UTF-8 но нямаше никакво сетнато локале съсзадох нов клъстър със bg_BG.utf8 и заспа :> не всичко заспа де тука девелопера каза нещо от рода на "е регулярните изрази пак не работи lower и upper" но нас и така ни устройваше :> то май на сайта на постгрето си пише че там не работи.
ако настоящата база е utf-8 няма нужда от iconv
|
|
Тема
|
Re: cyrilic Upper function
[re: mutant]
|
|
Автор | null (Нерегистриран) |
Публикувано | 01.03.06 14:08 |
|
Базата беше UTF8
и сега работи - успях да я прехвърля без сътресения
но пак излезе въпроса - как да проработят UPPER и LOWER
|
|
Тема
|
Re: cyrilic Upper function
[re: null]
|
|
Автор | null (Нерегистриран) |
Публикувано | 01.03.06 16:12 |
|
Оказа се, че upper и lower работят
Не съм бил имал подходящия локал инсталиран
Проработи по следния начин
bglinux - слага локала bg_bg.UTF8
pg_dump - базата ми е в UTF8
initbg --locale bg_BG.UTF8
createdb
pg_restore
Довечера ще го приложа на продакшън базата.
Стискайте палци :)
|
|