Click here to Skip to main content
15,901,205 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I want to create a stored procedure for this I have a table products.I want to search products by product name. If i enter a product name like "PEN DRIVE" firstly show result about "PEN DRIVE" after that "PEN" and "DRIVE".
Posted
Comments
Abhinav S 9-Jul-12 2:04am    
Tried abything?

All you need to do is to break the input on the space, and generate a temporary table to hold the results. You then select into the temporary table each row which matches
SQL
productName LIKE '%' + fragment + '%'
 
Share this answer
 
use this scenario, it will help you to create your store procedure.

SQL
DECLARE @PRODUCT TABLE(
	ID INT IDENTITY(1,1)
	,PRODUCTCODE VARCHAR(MAX)
	,PRODUCTNAME VARCHAR(MAX)
	,PRODUCTPRIZE VARCHAR(MAX)
)


INSERT INTO @PRODUCT VALUES ('P001','PEN DRIVE','100')
INSERT INTO @PRODUCT VALUES ('P002','PEN DRIVE','110')
INSERT INTO @PRODUCT VALUES ('P003','PEN DRIVE','120')
INSERT INTO @PRODUCT VALUES ('P004','PEN','10')
INSERT INTO @PRODUCT VALUES ('P005','PEN','20')
INSERT INTO @PRODUCT VALUES ('P006','DRIVE','1000')
INSERT INTO @PRODUCT VALUES ('P007','LIGHT','200')
INSERT INTO @PRODUCT VALUES ('P008','MONITOR','10000')

DECLARE @SEARCHSTRING VARCHAR(MAX)
DECLARE @FIRESTWORD VARCHAR(MAX)
DECLARE @SECONDWORD VARCHAR(MAX)
SET @SEARCHSTRING = 'PEN DRIVE'

SELECT @FIRESTWORD = RTRIM(LTRIM(SUBSTRING(@SEARCHSTRING, 1,CHARINDEX(' ', @SEARCHSTRING)))),
@SECONDWORD = RTRIM(LTRIM(SUBSTRING(@SEARCHSTRING, CHARINDEX(' ', @SEARCHSTRING),LEN(@SEARCHSTRING)))) 

SELECT * FROM @PRODUCT WHERE PRODUCTNAME = @SEARCHSTRING OR PRODUCTNAME = @FIRESTWORD OR PRODUCTNAME = @SECONDWORD


Result will be like this...

SQL
ID          PRODUCTCODE PRODUCTNAME PRODUCTPRIZE
----------- ----------- ----------- ------------
1           P001        PEN DRIVE   100
2           P002        PEN DRIVE   110
3           P003        PEN DRIVE   120
4           P004        PEN         10
5           P005        PEN         20
6           P006        DRIVE       1000
 
Share this answer
 
v2
Comments
kicker2012 11-Jul-12 8:37am    
you are a genius see..

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900