webForumDet fria alternativet

problem med lagrad procedur

6 svar · 537 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005833 inlägg
#1

har följande

CREATE PROCEDURE [dbo].GetBloggPostByBloggIdAndSearchText
(
@bloggID int,
@searchText varchar(50)
)
AS
BEGIN
	SET NOCOUNT ON;

	SELECT p.postID, 
	ISNULL(p.cID, 0) AS 'cID',
	p.Header, 
	p.Text, p.bID,
	ISNULL(c.Name, 'Saknas') AS 'categoryName',	
	CONVERT(VARCHAR(17), p.Date, 113) AS date,
	ISNULL(u.UserName, 'Avregistrerad') AS 'UserName'	
	FROM post AS p
	LEFT OUTER JOIN category AS c
	ON p.cID = c.cID
	LEFT OUTER JOIN aspnet_Users AS u
	ON p.UserId = u.UserId
	WHERE p.bID = @bloggID
	AND p.Header + ' ' + p.Text Like '%@searchText%'
	ORDER BY p.Date DESC

END

Får felmeddelandet:
The data types text and varchar are incompatible in the add operator.

på:

AND p.Header + ' ' + p.Text Like '%@searchText%'

p.Header är i databasen varchar medans p.Text är text. Har provat med castat om dem till text men får samma felmeddelande.

Någon som vet hur man kan lösa det??

Tacksam för all hjälp :stud

TravoniMedlem sedan okt. 20041 556 inlägg
#2

Har du testat att casta om till varchar(stort_tal)?

Eller varför inte:

... AND (p.Header Like '%@searchText%' OR p.Text Like '%@searchText%')

VinnarenMedlem sedan sep. 2005833 inlägg
#3

tack, märkte nu att det måste vara @searchText som är fel. Får inte ut något felmeddelande men häller inget resultat när jag kör den med
GetBloggPostByBloggIdAndSearchText 9, '2'

men tar jag bort @searchText o "hårdkodar" in 2 så får jag fram resultatet jag förväntar mig.

Hur löser man detta??

tacksam för all hjälp :stud

doggelitoMedlem sedan juni 20003 076 inlägg
#4

Om du kör sql 2005 så ändra datatypen text till varchar(MAX).
varchar(MAX) är ny från 2005.
text är en gammal klumpig datatyp! :)

VinnarenMedlem sedan sep. 2005833 inlägg
#5

tack för tipset, nu e bägge varchar. Men jag får inga träffar iaf :r

Har provat med:
GetBloggPostByBloggIdAndSearchText 9, 't'

på följande:

	WHERE p.bID = @bloggID
	AND p.Header + ' ' + p.Text Like '%@searchText%'
	WHERE p.bID = 9
	AND p.Header + ' ' + p.Text Like '%@searchText%'
	WHERE p.bID = @bloggID
	AND p.Header + ' ' + p.Text Like '%t%'

men det är bara

	WHERE p.bID = 9
	AND p.Header + ' ' + p.Text Like '%t%'

som fungerar :( får inget felmeddelande, utan det kommer inte ut någon rad.

Vad kan det vara för fel tro? x(

doggelitoMedlem sedan juni 20003 076 inlägg
#6

Du har visst skrivit din parameter lite tokigt!

... Like '%' + @searchText + '%'

Funkar nog bättre! :)

VinnarenMedlem sedan sep. 2005833 inlägg
#7

tack, tusen tack doggelito, nu funkar den perfekt :bire

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)