webForumDet fria alternativet

Konstigt felmeddelande

ASP

6 svar · 196 visningar · startad av joup

Medlem sedan feb. 2002116 inlägg
Frågan#1

Får ett konstigt felmeddelande av MSSQL Server när jag försöker köra en grej, och jag fattar inte riktigt vad som menas.

namn = replace(RS("namn"),"3","III")
namn = replace(namn,"'","")
namn2 = replace(RS("namn"),"2","II")
namn2 = replace(namn2,"'","")

SQL2 = "SELECT bilder, id, inledning, left(datum,10) AS datum, rubrik from nyheter where replace(rubrik,""'"","""") LIKE '%" & replace(RS("namn"),"'","") & "%' OR replace(inledning,""'"","""") LIKE '%" & replace(RS("namn"),"'","") & "%' OR replace(nyhet,""'"","""") LIKE '%" & replace(RS("namn"),"'","") & "%' OR replace(nyhet,""'"","""") LIKE '%" & namn & "%' OR replace(nyhet,""'"","""") LIKE '%" & namn2 & "%' OR spel=" & request.querystring("id") & " Order by datum desc"
Set RS2 = Connection.Execute(SQL2)

Namn, namn2 och rs("namn") är inte "tomma" stränga.

Felmeddelande

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC SQL Server Driver][SQL Server]Cannot use empty object or column names. Use a single space if necessary. 

/mssql/visa.asp, line 268
Medlem sedan aug. 20021 752 inlägg
#2

Vet inte om det är det som är fel men

 from nyheter where replace(rubrik,""'"","""") LIKE '%"

ska inte denna replace sats också stå utanför strängen?

 from nyheter where " & replace(rubrik,""'"","""") & " LIKE '%"

/Viktor

Medlem sedan feb. 2002116 inlägg
#3

Nej, det går inte. Då tror den väl att "rubrik" är en variabel, och inte databaskolumen.

Bör även påpeka att exakt samma SQL-sats fungerar finfint i MySQL, så troligen är det något MSSQL-specifikt problem.

Medlem sedan aug. 20003 575 inlägg
#4

Har du kollat så att alla variabler verkligen innehåller något så att ingen variabel är null ?

Medlem sedan feb. 2002116 inlägg
#5

Japp, variablarna är lugna.

Har hittat felet nu, men förstår fortfarande inte varför. Det är där jag försöker köra en "replace" på en kolumn i tabellen. Varför fungerar inte det?

Medlem sedan dec. 200012 464 inlägg
#6

Problemet är att du försöker använda " som strängavgränsare i SQL. Sluta genast med det.

Medlem sedan feb. 2002116 inlägg
#7

Aha, tror jag hittade ett annat fel också. MSSQL verkar inte gilla att man kör "replace" på "text"-kolumner som innehåller mer än 8000 tecken.

Detta fungerar fint:

SQL2 = "SELECT bilder, id, inledning, left(datum,10) AS datum, rubrik from nyheter where replace(CAST(nyhet AS VARCHAR(8000)),' ','') LIKE '%" & namn2 & "%' OR spel=" & request.querystring("id") & " Order by datum desc"

Nu är ju problemet att jag inte vill ersätta mellanslag med ingenting, utan vill ju ersätta alla '-tecken med ingenting. Hur gör man detta?

273 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
140 ms — ändringar (db)