как использовать upper в запросе, если БД имеет кодировку none и по полю нет Win1251

alexey.barkalov
Дата: 22.07.2012 13:46:33
Здравствуйте. Есть база (данные на русском языке) FB 2.0, которая была давно создана с кодировкой None,
нужно выполнить корректно запрос, вида:
select *
from my_table
where upper(my_field collate pxw_cyrl)=:p

У поля my_field нет кодировки Win1251, поэтому при выполнении запроса выдается ошибка:
(*
Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Data type unknown.
COLLATION PXW_CYRL for CHARACTER SET NONE is not defined.
*)

По ряду причин изменения мне вносить в структуру нельзя, поэтому поставить
по данному полю кодировку Win1251, чтобы корректно отработал вышеуказанный запрос.

Что делать?
Dimitry Sibiryakov
Дата: 22.07.2012 14:32:18

alexey.barkalov
Что делать?

Попробуй CAST.

Posted via ActualForum NNTP Server 1.5

alexey.barkalov
Дата: 22.07.2012 14:35:14
Dimitry Sibiryakov
alexey.barkalov
Что делать?

Попробуй CAST.


Если так, то не помогло
select *
from my_table
where upper(cast(my_field as varchar(64)) collate pxw_cyrl)=:p
Dimitry Sibiryakov
Дата: 22.07.2012 14:39:45

alexey.barkalov
Если так

А указывать character set у varchar кто будет?..

Posted via ActualForum NNTP Server 1.5

alexey.barkalov
Дата: 22.07.2012 14:49:57
Dimitry Sibiryakov
alexey.barkalov
Если так

А указывать character set у varchar кто будет?..

это как, чёто такое не делал?
alexey.barkalov
Дата: 22.07.2012 15:47:22
alexey.barkalov
Dimitry Sibiryakov
пропущено...

А указывать character set у varchar кто будет?..

это как, чёто такое не делал?


select *
from my_table
where upper(cast(my_field as varchar(64) character set WIN1251))=:p

правда в документации нашел, что можно вместо Cast как-то и через маркер _WIN1251,
но у меня не получилось