έχω έναν πίνακα
create table fl_company(
cmId int identity(1,1) constraint companyPK primary key,
cmName varchar(128) not null,
.....
)
και θέλω να φτιάξω ένα stored procedure που θα παίρνει μια varchar parameter, θα την σπάει σε keywords, θα κάνει αναζήτηση στο cmName και θα επιστρέφει κάποια πεδία. Βρήκα ένα function που κάνει το splitCREATE FUNCTION dbo.Split(@String varchar(4000), @Delimiter char(1))
RETURNS @Results TABLE (Items varchar(4000))
AS
BEGIN
DECLARE @INDEX INT
DECLARE @SLICE varchar(4000)
-- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z
-- ERO FIRST TIME IN LOOP
SELECT @INDEX = 1
-- following line added 10/06/04 as null
-- values cause issues
IF @String IS NULL RETURN
WHILE @INDEX !=0
BEGIN
-- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTER
SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)
-- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLE
IF @INDEX !=0
SELECT @SLICE = LEFT(@STRING,@INDEX - 1)
ELSE
SELECT @SLICE = @STRING
-- PUT THE ITEM INTO THE RESULTS SET
INSERT INTO @Results(Items) VALUES(@SLICE)
-- CHOP THE ITEM REMOVED OFF THE MAIN STRING
SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)
-- BREAK OUT IF WE ARE DONE
IF LEN(@STRING) = 0 BREAK
END
RETURN
END
πώς μπορώ να κάνω όμως το search τώρα;
create procedure findManyKeywords
@manyKeywords varchar(4000)
as
declare @keywords table(items varchar(4000))
@keywords = dbo.split(@manyKeywords,',')
-- και τώρα;
-- τι γίνεται;
go
μήπως είναι καλύτερα να κάνω το search μεσα στο function Και να εισάγω στον πίνακα που επιστρέφει τα αποτελέσματα;