Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];

Вниз

Поиск символа из масcива в строке   Найти похожие ветки 

 
DelphiN!   (2008-07-22 13:08) [0]

Нужно написать запрос, который выводил все записи, в которых встречается какой либо символ из английского и русского алфавита, как можно это сделать?
Нужно что-то похожее на
select * from table where field1 in ["A.."z"]


 
Dizzel   (2008-07-22 13:11) [1]

Вернее
select * from table where ["A.."z"] in field1


 
DelphiN!   (2008-07-22 13:11) [2]


> Dizzel   (22.07.08 13:11) [1]


Это я ...


 
turbouser ©   (2008-07-22 13:23) [3]


> DelphiN!  

ХП + substring


 
stas ©   (2008-07-22 13:24) [4]

В MS SQL можно так: field1 like "%[А-Я]%"


 
DelphiN!   (2008-07-22 13:46) [5]


> stas ©   (22.07.08 13:24) [4]


В FireBird 2.1 так не работает


> turbouser ©   (22.07.08 13:23) [3]


А без хранимых процедур никак?


 
turbouser ©   (2008-07-22 13:51) [6]


> DelphiN!   (22.07.08 13:46) [5]
> А без хранимых процедур никак?

case -ом :)


 
turbouser ©   (2008-07-22 13:53) [7]


> DelphiN!   (22.07.08 13:46) [5]

Лови...

CREATE PROCEDURE EN_RU (
   s varchar(50) character set cyrl)
returns (
   idx integer)
as
declare variable i integer;
declare variable ch char(1) character set cyrl;
declare variable en varchar(30);
declare variable ru varchar(34);
begin
EN="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
RU="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
I=1;
while (i<=strlen(:S)) do
begin
 Ch = substring(:S from :i for 1);
 if ((:EN containing :Ch) or (:RU containing :Ch)) then
 begin
   IDX=:I;
   break;
   end
 I=:I+1;
 end
 suspend;
end


 
Правильный$Вася   (2008-07-22 14:00) [8]

UDF сделай


 
DelphiN!   (2008-07-22 14:55) [9]


> turbouser ©   (22.07.08 13:53) [7]
>
> Лови...


Спасибо!

А можно ли проверить число ли в строке или нет? Только без ХП


 
PEAKTOP ©   (2008-07-22 14:59) [10]

можно еще

SELECT  T1.*
FROM    table1 T1
WHERE  (T1.FIELD1 SIMILAR TO "[A-z]")
     OR  (T1.FIELD1 SIMILAR TO "[А-я]")


Но для использования нужен Firebird не ниже версии 2.5.0.20343


 
PEAKTOP ©   (2008-07-22 15:01) [11]

> А можно ли проверить число ли в строке или нет? Только без ХП

Аналогично

SELECT  T1.*
FROM    table1 T1
WHERE  (T1.FIELD1 SIMILAR TO "[0-9]")


 
turbouser ©   (2008-07-22 15:02) [12]


> DelphiN!   (22.07.08 14:55) [9]

См. [8]


 
turbouser ©   (2008-07-22 15:02) [13]


> PEAKTOP ©

2.5 еще альфа совсем...


 
Сергей М. ©   (2008-07-22 16:51) [14]


> можно ли проверить число ли в строке или нет?


Можно, если ты понимаешь, что такое "число в строке")


 
Правильный$Вася   (2008-07-22 17:29) [15]


> А можно ли проверить число ли в строке или нет?

"abcd345efg" LIKE "%345%"


 
stas ©   (2008-07-22 17:34) [16]

Правильный$Вася   (22.07.08 17:29) [15]
не он хочет узнать есть ли в строке abcd345efg число


 
Правильный$Вася   (2008-07-22 18:46) [17]


> stas ©   (22.07.08 17:34) [16]

если число конкретное, то [15]
если узнать, а вообще число ли оно, то CAST


 
Loginov Dmitry ©   (2008-07-23 00:02) [18]

> А можно ли проверить число ли в строке или нет? Только без
> ХП


EXECUTE BLOCK. Аналог ХП, но можно задавать как и любой SELECT-запрос в компоненте TIBDataSet. Поддерживается с версии 2.0. Хороший пример есть в статье РЕАКТОРА "Firebird 2.0 на полную катушку".


 
DelphiN!   (2008-07-23 10:03) [19]

Спасибо все за советы!
Так как используется FB ниже 2.5 придётся использовать ХП ...


BEGIN
USERTYPE = "MEMBER";
NUM="0123456789";
I=1;
Ch = "/";
while ((ch <> "")and(usertype = "MEMBER")) do
begin
Ch = substring(:S from :i for 1);
if ((:NUM containing :Ch)) then
begin
  USERTYPE = "NUM";
  break;
end
I=:I+1;
end
suspend;
END


В FB 2.1 данная процедура работает хорошо, но при попытки использования ее в FB 1.5.1 ругается на строку Ch = substring(:S from :i for 1);. Какой есть аналог функции для FB 1.5?
Вот ошибка :

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 16, column 25.
:.


 
DelphiN!   (2008-07-23 10:16) [20]

Если я заменяю :i на статическое число, то все работает, как решить это проблему?
Ch = substring(:S from :i for 1);
на
Ch = substring(:S from 1 for 1);


 
Правильный$Вася   (2008-07-23 11:10) [21]


>  Какой есть аналог функции для FB 1.5?

подключи UDF, в твоей версии неттакой встроенной функции, но есть в стандартном списке UDF
при этом понимает параметры-переменные


 
DelphiN!   (2008-07-23 11:43) [22]


> Правильный$Вася   (23.07.08 11:10) [21]


А как подключить UDF?


 
DelphiN!   (2008-07-23 11:57) [23]

В смысле какое описание должно быть у "правильной" substring?


 
Правильный$Вася   (2008-07-23 13:00) [24]


> В смысле какое описание должно быть у "правильной" substring?

в справке по IB6 написано


 
Loginov Dmitry ©   (2008-07-23 22:27) [25]

> В FB 2.1 данная процедура работает хорошо, но при попытки
> использования ее в FB 1.5.1 ругается на строку Ch = substring(:
> S from :i for 1);. Какой есть аналог функции для FB 1.5?


Так тыж FB 2.1 используешь (см [5]). К чему тогда о проблемах с FB 1.5 спрашивать?


 
DelphiN!   (2008-07-24 04:42) [26]


> Loginov Dmitry ©   (23.07.08 22:27) [25]



> DelphiN!   (23.07.08 10:03) [19]



> В FB 2.1 данная процедура работает хорошо, но при попытки
> использования ее в FB 1.5.1 ругается на строку


Основная версия FB в компании 2.1, однако на некоторых серверах еще осталась 1.5.1 ...


 
DelphiN!   (2008-07-24 04:54) [27]


> Правильный$Вася   (23.07.08 13:00) [24]
>
> в справке по IB6 написано


Не могу найти :(


 
turbouser ©   (2008-07-24 08:36) [28]


> DelphiN!   (23.07.08 11:57) [23]

см. \program files\firebird\udf\ib_udf.sql
выполняешь скрипт - будет в базе функция substr
и еще много чего полезного :)


 
Виталий Панасенко(дом)   (2008-07-24 08:43) [29]

Найди RFUNC - там все есть, DLL скрипты на подключение/отключение UDF. Бесплатная библиотека


 
DelphiN!   (2008-07-24 12:04) [30]


> turbouser ©   (24.07.08 08:36) [28]
>
> см. \program files\firebird\udf\ib_udf.sql
> выполняешь скрипт - будет в базе функция substr
> и еще много чего полезного :)


Заработало!!!

Огромное спасибо всем за помощь!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.045 c
2-1233060048
peroon
2009-01-27 15:40
2009.03.15
Перебор типа OleVariant


15-1231656099
vvrz
2009-01-11 09:41
2009.03.15
Delphi и Windows Mobile


15-1232126943
brrr
2009-01-16 20:29
2009.03.15
Проблема с железом (?)


15-1230182983
novai
2008-12-25 08:29
2009.03.15
как очистить таблицу от записей в access?


15-1231438102
Городской Шаман
2009-01-08 21:08
2009.03.15
Научная магия





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский