INTERBASE
12 отговора
605 прегледа
INTERBASE
Здравейте
Можете ли да ми кажете в SELECT зявка как да използвам LIKE '%нещо%' при положение че "нещото" е променлива :var
примерно: SELECT COUNT(*) FROM X WHERE FIELDS LIKE :x <- тук е проблема не може да се използва прочент защото ще трябва да сложа и апострофи.
Предварително благодаря
Можете ли да ми кажете в SELECT зявка как да използвам LIKE '%нещо%' при положение че "нещото" е променлива :var
примерно: SELECT COUNT(*) FROM X WHERE FIELDS LIKE :x <- тук е проблема не може да се използва прочент защото ще трябва да сложа и апострофи.
Предварително благодаря
Re: INTERBASE
Незнам защо но не става в интерес на истината
Ползвам твоя пример и нещо не върви
Ползвам твоя пример и нещо не върви
Re: INTERBASE
i kak go polzwash. Ot nyakakwa SQL zayawka, kato stored procedure ili kak. Pri mene towa raboti :
Interbase LI-V6.0.1.0
create procedure test_variable ( var varchar(100) )
returns ( cnt integer )
as
begin
select count(*) from a_table where a_field like '%' || :var || '%' into :cnt;
suspend;
end
Interbase LI-V6.0.1.0
Редактирано от killall на
Re: INTERBASE
Wsyshtnost sega kato se zamislya wyobshte ne ti tryabwa da polzwash like. Mojesh i taka, po-dobre mi izglejda nyakak si :
select count(*) from a_table where a_field containing :x
select count(*) from a_table where a_field containing :x
Re: INTERBASE
Нямам представа какво става
Имам процедура с 3 входящи параметъра и един който се връща. Имам една таблица с думи. Искам да проверя в изречението което подавам има ли дума от таблицата с думи това е нищо повече и неще и това си е.
Имам процедура с 3 входящи параметъра и един който се връща. Имам една таблица с думи. Искам да проверя в изречението което подавам има ли дума от таблицата с думи това е нищо повече и неще и това си е.
Re: INTERBASE
Ako pastnesh tuka i kak go prawish tochno towa deto ne stawa moje i da izmislim neshto ...
Re: INTERBASE
CREATE PROCEDURE DBINSERT (
MESSAGE VARCHAR (180),
DATETIME DATE,
PHONE CHAR (20))
RETURNS (
RESULT SMALLINT)
AS
BEGIN
SELECT COUNT(WORDS.WORD) FROM WORDS
WHERE WORDS.WORD LIKE '%'||:MESSAGE||'%' INTO :COUNTWORD;
SUSPEND;
END
Където в таблица WORDS да речем има дума: ЯБЪЛКА, а MESSAGE e: ЗЛАТНАТА ЯБЪЛКА
MESSAGE VARCHAR (180),
DATETIME DATE,
PHONE CHAR (20))
RETURNS (
RESULT SMALLINT)
AS
BEGIN
SELECT COUNT(WORDS.WORD) FROM WORDS
WHERE WORDS.WORD LIKE '%'||:MESSAGE||'%' INTO :COUNTWORD;
SUSPEND;
END
Където в таблица WORDS да речем има дума: ЯБЪЛКА, а MESSAGE e: ЗЛАТНАТА ЯБЪЛКА
Re: INTERBASE
Ami estestweno che nyama da stawa.
WORDS.WORD LIKE '%'||:MESSAGE||'%'
ti proweryawa ne dali dali wyw words.word se sydyrja messge, a ne obratnoto, kakto wsyshtnost tryabwa da e :))
Probwaj towa :
SELECT COUNT(WORDS.WORD) FROM WORDS
WHERE :MESSAGE CONTAINING WORDS.WORD INTO :COUNTWORD;
WORDS.WORD LIKE '%'||:MESSAGE||'%'
ti proweryawa ne dali dali wyw words.word se sydyrja messge, a ne obratnoto, kakto wsyshtnost tryabwa da e :))
Probwaj towa :
SELECT COUNT(WORDS.WORD) FROM WORDS
WHERE :MESSAGE CONTAINING WORDS.WORD INTO :COUNTWORD;
Re: INTERBASE
Трябва или на клиента или в UDF да отделяш думите съдържащи се в MESSAGE и като параметър в SELECT COUNT(WORDS.......... да подаваш отделни думи

Re: INTERBASE
Ми това с разбиването не е вариант исках цялото изречение да го подавам и да търси в таблицата с думите кое го има и кое не.
Re: INTERBASE
Da ti imam i obyasneniyata :))
Koe ne raboti - ne se kompilira, ne dawa werni rezultati, ne dawa nikakwi rezultati, ne dawa wsichki rezultati ....
Specialno zaradi tebe si naprawih slednoto :
Ta kakwo tochno wikash che ne rabotelo ?!??!?!
Koe ne raboti - ne se kompilira, ne dawa werni rezultati, ne dawa nikakwi rezultati, ne dawa wsichki rezultati ....
Specialno zaradi tebe si naprawih slednoto :
CREATE TABLE WORDS (
ID_WORDS INTEGER NOT NULL,
WORD VARCHAR (255) character set WIN1251 collate WIN1251);
ALTER TABLE WORDS ADD CONSTRAINT PK_WORDS PRIMARY KEY (ID_WORDS);
SET TERM ^ ;
CREATE TRIGGER AI_WORDS_ID_WORDS FOR WORDS ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
NEW.ID_WORDS = GEN_ID(WORDS_ID_WORDS_GEN, 1);
END
^
CREATE PROCEDURE GET_WORD_COUNT (
SENTENCE VARCHAR (10000))
RETURNS (
WORDCOUNT INTEGER)
AS
BEGIN
select
count(*)
from words
where
:sentence containing word
into
:wordcount;
SUSPEND;
END
^
SET TERM ; ^
INSERT INTO WORDS (WORD) VALUES ('red');
INSERT INTO WORDS (WORD) VALUES ('blue');
INSERT INTO WORDS (WORD) VALUES ('green');
INSERT INTO WORDS (WORD) VALUES ('alabala');
INSERT INTO WORDS (WORD) VALUES ('apple');
select * from get_word_count("red alert apple blue");
WORDCOUNT
---------------
3
Ta kakwo tochno wikash che ne rabotelo ?!??!?!