Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.15;
Скачать: CL | DM;

Вниз

Поиск символа из мас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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.018 c
15-1231263856
Кое кто
2009-01-06 20:44
2009.03.15
Большой архив маленьких английских рассказов...


15-1231397112
@!!ex
2009-01-08 09:45
2009.03.15
Разработка софта на заказ какой код в ОКВЭД имеет?


2-1232942009
Drowsy
2009-01-26 06:53
2009.03.15
Не получается точно определить ширину текста на канве.


15-1231177309
nonamez11
2009-01-05 20:41
2009.03.15
смена картинки при наведении


15-1231596111
Slider007
2009-01-10 17:01
2009.03.15
С днем рождения ! 5 января 2009 понедельник