webForumDet fria alternativet

[ och ] ställer till det...

ASP

4 svar · 157 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1
SELECT ForumForums.*, ForumReplys.*, ForumTopics.* FROM (ForumForums LEFT JOIN ForumTopics ON ForumForums.Forum_ID = ForumTopics.Forum_id) LEFT JOIN ForumReplys ON ForumTopics.Topic_ID = ForumReplys.Topic_ID WHERE (ForumForums.F_Description LIKE '%[%' OR ForumReplys.R_Message LIKE '%[%' OR ForumTopics.T_Message LIKE '%[%' ) ORDER BY ForumTopics.topic_id

Från följande SQL sats får jag felet:

Microsoft JET Database Engine fel '80040e14' 

Invalid pattern string

Det uppstår när jag matar in ett [ tecken i sökfältet som "kodas om" till LIKE '%[%' ... Hur ska man göra för att undgå detta?

------------------
"It's not where ya from it's where ya at"

Medlem sedan dec. 200012 464 inlägg
#2

Dy kan ju testa med att byta [ mot [[]

Vet inte om det hjälper dock.

Det finns en escape klausul i SQL

col like '%\[%' escape '\'

vilket betyder att [ inte tolkas som ett specialtecken, vet ej om Access stöder detta dock.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#3

Helsjukt fel...
Jag gjorde i alla fall en funktion som fixar till strängen innan den körs i databasen (escape funkade inte i access):

' Sjuk buggfix:
' Gör om [ till [] om det inte finns någon ] i strängen.
' Ex: "Hesjan [hoppsan" blir "Hejsan []hoppsan".
Function convChar(tmp)
If inStr(tmp, "[") And Not inStr(tmp, "]") Then
tmp = Replace(tmp, "[", "[]")
End If
convChar = tmp
End Function

------------------
"It's not where ya from it's where ya at"

Medlem sedan dec. 200012 464 inlägg
#4

I access kan man använda uttryck som

c1 like 'A[BCD]E'

vilket matchar ABE ACE ADE

så att skriva

c1 like '%[]%'
-- eller
c1 like '%%'

är samma sak

däremot så borde

c1 like '%[[]%'

matcha en sträng som innehåller [

Så om du byter [ mot [] så blir väl din sökning inte korrekt.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#5

Jo, konstigt nog så gjorde det.
Det blir fel så fort jag anger ett [ men inte avslutar med ett ]...

Ex: Nu söker jag efter ett [ tecken och detta kommer inte att funka

Ovanstående blir fel eftersom [ inte avslutas. Men däremot så kvittar det hur många ] jag skriver efteråt:

Ex: Nu söker jag efter []] och detta kommer faktiskt att funka!

------------------
"It's not where ya from it's where ya at"

[Redigerat av Pace den 01 sep 2001]

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)