Тема
|
INTERBASE
|
|
Автор | aginor (Нерегистриран) |
Публикувано | 22.10.03 16:13 |
|
Здравейте
Можете ли да ми кажете в SELECT зявка как да използвам LIKE '%нещо%' при положение че "нещото" е променлива :var
примерно: SELECT COUNT(*) FROM X WHERE FIELDS LIKE :x <- тук е проблема не може да се използва прочент защото ще трябва да сложа и апострофи.
Предварително благодаря
|
|
|
SELECT COUNT(*) FROM X WHERE FIELDS LIKE '%' || :x || '%'
|
|
Тема
|
Re: INTERBASE
[re: killall]
|
|
Автор | lNTERBASE (Нерегистриран) |
Публикувано | 23.10.03 12:46 |
|
Незнам защо но не става в интерес на истината
Ползвам твоя пример и нещо не върви
|
|
|
i kak go polzwash. Ot nyakakwa SQL zayawka, kato stored procedure ili kak. Pri mene towa raboti :
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 на 23.10.03 16:42.
|
|
|
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
|
|
Тема
|
Re: INTERBASE
[re: killall]
|
|
Автор | aginor (Нерегистриран) |
Публикувано | 03.11.03 14:13 |
|
Нямам представа какво става
Имам процедура с 3 входящи параметъра и един който се връща. Имам една таблица с думи. Искам да проверя в изречението което подавам има ли дума от таблицата с думи това е нищо повече и неще и това си е.
|
|
|
Ako pastnesh tuka i kak go prawish tochno towa deto ne stawa moje i da izmislim neshto ...
|
|
Тема
|
Re: INTERBASE
[re: killall]
|
|
Автор | aginor (Нерегистриран) |
Публикувано | 04.11.03 10:57 |
|
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: ЗЛАТНАТА ЯБЪЛКА
|
|
|
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;
|
|
Тема
|
Re: INTERBASE
[re: killall]
|
|
Автор | aginor (Нерегистриран) |
Публикувано | 04.11.03 13:47 |
|
Най - интересното е, че това също не работи
|
|
Тема
|
Re: INTERBASE
[re: aginor]
|
|
Автор |
NDeu (динозавър) |
Публикувано | 04.11.03 16:00 |
|
Трябва или на клиента или в UDF да отделяш думите съдържащи се в MESSAGE и като параметър в SELECT COUNT(WORDS.......... да подаваш отделни думи
|
|
Тема
|
Re: INTERBASE
[re: NDeu]
|
|
Автор | aginor (Нерегистриран) |
Публикувано | 07.11.03 10:31 |
|
Ми това с разбиването не е вариант исках цялото изречение да го подавам и да търси в таблицата с думите кое го има и кое не.
|
|
|
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 :
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 ?!??!?!
|
|