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
6 svar · 196 visningar · startad av joup
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
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
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.
Har du kollat så att alla variabler verkligen innehåller något så att ingen variabel är null ?
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?
Problemet är att du försöker använda " som strängavgränsare i SQL. Sluta genast med det.
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?