בס"ד
 
  צור חשבון משתמש
התחבר
 
עמוד ראשי מאמרים וכתבות פורומים שליחת מאמר החדר שלי RSS הודעה פומבית  
תפריט
העמוד הראשי
מאמרים
פורומים
בדיחות
משחקים [1] [2]
הסיפור שאינו נגמר
סקרים
רדיו
קישורים
החדר שלי - סרוג אישי
מסרים אישיים
הפוך לדף הבית
הוסף למועדפים
RSS
צור קשר
פרסם כאן!
 
עסקים
 
תיבת חיפוש
Google
 
מחוברים עכשיו
 
סקר
מה התכנון שלכם לחודש הראשון של החופש?

בגרויות
לעבוד
ללמוד נהיגה
לעשות פסיכומטרי
ללכת לקייטנה / מחנה
להתבטל
ללמוד תורה
לעזור לזקנים לחצות את הכביש
אחר (פרטו בתגובות!)
תוצאה
משאל

הצבעות: 587
תגובות: 7
 
רישום לסרוג
רישום לסרוג
התחברות
התחברות
חיפוש בפורומים
חיפוש בפורומים
צור קשר
צור קשר

חידה! (למביני SQL)

 
שליחת הודעה חדשה   תגובה להודעה    מפתח הפורומים -> מחשבים
צפה בנושא הקודם :: צפה בנושא הבא  
מחבר הודעה
tickler
מנהל פורום
מנהל פורום


הצטרף בתאריך: Dec 24, 2004
הודעות: 3666

הודעהנשלח: 13/7/12 4:07    כותרת הודעה: חידה! (למביני SQL) תגובה עם ציטוט

יש לי טבלת MySQL בשם tbl, ובה שדה בשם data (מסוג varchar, אבל זה לא חשוב).

ראשית נכניס מידע לטבלה:
קוד:
INSERT INTO `tbl` (`data`)
VALUES
    ('Let me teach you some escape sequences:'),
    ('First is carriage-return(CR): \\r'),
    ('Second is line-feed(LF): \\n'),
    ('And last-but-not-least is tab: \\t');


כעת נבצע כמה שאילתות:
קוד:
SELECT COUNT(1)
FROM `tbl`
WHERE `data` LIKE '%is%';
קוד:
SELECT COUNT(1)
FROM `tbl`
WHERE `data` LIKE '%\\%';

הפלט של השאילתה הראשונה הוא 3 - בדיוק מה שציפינו כשספרנו את כמות השורות שבהן מופיעה המילה is.
אבל הפלט של השאילתה השניה הוא 0 - לכאורה לא נמצאה אף שורה שבה מופיע התו \ .

מי ידע למה קיבלתי את הפלט הזה?
זו חידה כי מסתתר כאן משהו לא טריוויאלי. Wink
בהצלחה!
_________________
חזור למעלה
צפה בכרטיס האישי של המשתמש שלח מסר אישי שלח דואל בקר באתר הבית של המשתמש
יד_האלמונית
מנהלת פורום
מנהלת פורום


הצטרף בתאריך: Jul 21, 2004
הודעות: 7037
מיקום: בדיוק כאן!

הודעהנשלח: 15/7/12 9:49    כותרת הודעה: תגובה עם ציטוט

לא זוכרת כלום מSQL, ואין לי כח להתחיל לחפש ת'חומר ולנסות להיזכר.
אז נלך על מחשבים בכלליות. מה אומר ה//r וחבריו? לא איזה רק שורה, טאב קדימה וכו'? אז אולי הוא לא רואה אותם כטקסט אלא כמה שהם מסמלים. ???

(או לחילופין, את ה// לא רואה כי זה סימן של הערה. אבל אני לא זוכרת אם בSQL הוא מביחן את זה כהערה.)
חזור למעלה
צפה בכרטיס האישי של המשתמש שלח מסר אישי
TamarHP
מנהלת האתר
מנהלת האתר


הצטרף בתאריך: Jul 20, 2004
הודעות: 10763
מיקום: מול המחשב

הודעהנשלח: 15/7/12 2:58    כותרת הודעה: תגובה עם ציטוט

דפנה, הערה זה לכיוון השני בכלל - //...

אני תוהה אם הבעיה היא בשאילתא של החיפוש - למשל הוא חושב ש\\% זה תו מיוחד, במקום להבין שה% הוא חלק מהLIKE,
או בשאילתא של ההכנסה - כלומר הוא מפרש/מכניס את \\r ודומיו בצורה אחרת.
אגב, למה צריך פעמיים \ בהכנסה של הערכים? לא מספיק לכתוב \r או שאני מתבלבלת?
_________________
- חתימות אחר כך -

"לא ארץ נכריה לקחנו ולא ברכוש נכרים משלנו, כי אם נחלת אבותינו אשר בידי אויבנו בעת מן העתים בלא משפט נכבשה. ואנחנו, כאשר הייתה לנו עת, השבנו את נחלת אבותינו." (שמעון המכבי)
חזור למעלה
צפה בכרטיס האישי של המשתמש שלח מסר אישי בקר באתר הבית של המשתמש
tickler
מנהל פורום
מנהל פורום


הצטרף בתאריך: Dec 24, 2004
הודעות: 3666

הודעהנשלח: 15/7/12 7:03    כותרת הודעה: תגובה עם ציטוט

back-slash (\) הוא "תו הברחה" (escape) ב-SQL, שמאפשר להכניס תווים מיוחדים שסתם כך אי אפשר לרשום.
בהכנסת הערכים לתוך הטבלה השתמשתי ב-\\ בגלל שאם הייתי כותב \n זה היה הופך לתו המיוחד new-line (מספר 0x10 או 16 בטבלת ASCII). אני לא רוצה להכניס את התו המיוחד הזה, אלא את רצף התווים \ שאחריו n. לכן כפלתי את התו \, כך אני אומר ל-SQL שאני רוצה ממש לכתוב את התו המיוחד \, ולא לייחס לו את המשמעות המיוחדת שלו (הברחה).
עד כאן הכל בסדר, באמת נכנסו לטבלה הערכים כפי שהתכוונתי - כלומר התוכן שלהם מכיל את התו \ שאחריו התו n או r או t - בהתאם לשורה.

אבל השאלה היא למה כשאני מנסה לחפש שורות שמכילות את התו \ (ע"י שאני מחפש את המבנה %\\%) - אני לא מקבל אף תוצאה?
_________________
חזור למעלה
צפה בכרטיס האישי של המשתמש שלח מסר אישי שלח דואל בקר באתר הבית של המשתמש
יד_האלמונית
מנהלת פורום
מנהלת פורום


הצטרף בתאריך: Jul 21, 2004
הודעות: 7037
מיקום: בדיוק כאן!

הודעהנשלח: 15/7/12 9:03    כותרת הודעה: תגובה עם ציטוט

התשובה הפשוטה היא שהיא מחפש \\ כמילה בפני עצמה, בליתוים אחריה.
(ומן הסתם ה% או משהו אחר מבהיר לשאילתה שלא כך. אבל אני לא זוכרת, ואין לי כח להיזכרSmile אני נהנת להמר..Smile)

תמר, אחרי שכתבת לי, שמתי לב שכתבתי על הערה, וכתבתי את ה/ כמו שצריך, אבל לא שמתי לב ששחר כתב \. מרחפת/עסוקה בדברים אחריםSmile

ושמתי לב שבנסיון להסביר מה זה \n כתבתי רק שורה במקום רד שורה. אני חושבת שהפעם זה בא לטובתי Razz
חזור למעלה
צפה בכרטיס האישי של המשתמש שלח מסר אישי
הצג הודעות קודמות:   

שליחת הודעה חדשה   תגובה להודעה


מפתח הפורומים -> מחשבים
עמוד 1 מתוך 1
  כל הזמנים הם שעון ישראל (GMT + שעתיים)

 
קפוץ אל:  
אתה יכול לשלוח הודעות בפורום זה
אתה יכול להגיב להודעות בפורום זה
אתה לא יכול לערוך את הודעותיך בפורום זה
אתה לא יכול למחוק את הודעותיך בפורום זה
אתה לא יכול להצביע למשאלים בפורום זה

Powered by phpBB © 2001, 2005 phpBB Group

העמוד הראשי | פורומים | מאמרים | טורים אישיים | בדיחות | קישורים | משחקים 1 | משחקים 2 | הסיפור שאינו נגמר | רדיו | החשבון שלי | מסרים | שאלות נפוצות |
RSS | Hosted By: HTTP | אינדקס אתרים | קשר החן - קשירת מטפחות | סרוגים | תנאי שימוש | צור קשר

© כל הזכויות שמורות לסרוג www.saroog.co.il | קרדיטים | sxc.hu
מערכת זו מופעלת על PHP-Nuke. ותורגמה על ידי צוות PHPNuke ישראל ושוחררה תחת הרישיון החופשי GNU/GPL .
כניסה למנהלים