חיפוש אחר שורות עם תווים מיוחדים ב - SQL
בעת פתרון בעיות תכנות היום שמתי לב שאתה לא יכול להשתמש חיפוש LIKE עבור מחרוזות עמודות המכילות תווים מיוחדים כמו% או _ ללא שימוש בתחביר מיוחד. להבין את הבעיה לקח רק כמה דקות, אבל לזכור תחביר הוא תמיד קל יותר אם אתה כותב על זה.
אז כן, הודעה זו היא רק לטובת שלי. אני מקווה שזה יעזור למישהו אחר מדי.
נניח שאתה רוצה למצוא שדות שמכילים את הטקסט "100%", לכן אתה יוצר שאילתה זו:
בחר * מתוך tablename שם fieldname LIKE '% 100 %%'
במקום מה שרצית, תקבל את כל השורות המכילות "100", כמו גם את השורות המכילות "100%".
הבעיה כאן היא כי SQL Server משתמש סימן אחוז, קו תחתון, סוגריים מרובעים כתווים מיוחדים. אתה פשוט לא יכול להשתמש בהם בתור תו רגיל שאילתה LIKE מבלי לברוח מהם.
בריבוע מרובע בריחה
אתה יכול להקיף את% או _ עם סוגריים מרובעים לספר SQL Server כי התו בפנים הוא תו רגיל.
בחר * מתוך tablename שם fieldname LIKE '% 100 [%]%'
תחביר ESCAPE T-SQL
לחלופין, תוכל לצרף את המפעיל ESCAPE לשאילתה שלך, ולהוסיף תו לפני הערך שברצונך לברוח.
בחר * מתוך tablename שם fieldname '% 100 \ %%' ESCAPE '\'
החלק 'ESCAPE' של השאילתה אומר למנוע SQL לפרש את התו אחרי \ בתור תווים מילוליים במקום כתו כללי.
אישית אני מוצא את השיטה השנייה קל יותר להתמודד עם, ואתה יכול להשתמש בו כדי להימלט סוגר מרובע גם כן.