עזרה במציאת פקודה המחזירה אורך של STRING

אוהב27

New member
עזרה במציאת פקודה המחזירה אורך של STRING

שלום ,
האם מישהו יכול לכתוב מהי הפקודה ב - SQL המחזירה אורך של STRING ?
הכוונה היא שיש לי שם מסוים נניח באורך של ככה וככה תוים ואני מנסה למצוא שם כזה בעל למעלה מ-20 תוים .
תודה
 

אוהב27

New member
הכוונה לאורך STRING הכולל גם את הרווחים..

כלומר לא רק את האותיות אלא גם ההפרדה בין מילה למילה בשם הארוך
 

אוהב27

New member
נכון.קראתי שיש פקודה שנקראת DATALENGHT

פקודה זו מחזירה את כל האורך כולל רווחים (הבנתי ש - LEN מחזירה רק תווין ללא רווחים) .
הכל אופן השאלה שלי היא אחרת :
כיצד אני יכול להשתמש בפקודה זו על מנת למצוא מה שאני מבקש ואני אסביר . יש לי טבלה ובה עמודה עם רשימה של שמות . אני רוצה לקבל אך ורק את השמות המכילים למעלה מ-20 תווים ( כולל רווחים) . לא ברור כיצד אני משתמש בפקודה . על פי מה שאני מבין אני צריך להכניס בכל פעם לפקודה את השם ואז מוחזר לי האורך . אני רוצה למצוא עבור עמודה מסוימת את השמות המכילות מעל 20 תוים .
אודה על עזרה מהירה .
 

i t a i b

New member
פירסור

היי,

מה שאני מציע שהוא שתרוץ על העמודה. תמצא את הרווחים (כלומר: הרווח שבין המילים) ותזהה את המיקום שלהם (על ידי פונקצית PATINDEX) ואז תחפש את הערכים שהרווח שלהם גדול מ- 20.
 

AvidaEinav

New member
דוגמא

אם מדובר על המון נתונים ופעולה תקופה, יהיה עדיף שתוסיף עמודה קבוע מאונדקסת עם האורך של כל שם...
 
הפונקציה LEN אכן מתעלמת מרווחים בסוף הערך,

אבל זה עדיין לא אומר שאי אפשר להשתמש בה. הקוד הבא נכתב ונבדק על sql server 2008:


DECLARE @Temp As Table (StringColumn nvarchar(50))

INSERT INTO @Temp (StringColumn)
SELECT 'a' UNION ALL
SELECT ' a' UNION ALL
SELECT 'a ' UNION ALL
SELECT 'a ' UNION ALL
SELECT 'a b c' UNION ALL
SELECT ' a s d f ' UNION ALL
SELECT 'some real words ' UNION ALL
SELECT 'and some other real words'

SELECT StringColumn,
REPLACE(StringColumn, ' ', '*') As 'StringColumn show spaces',
LEN(StringColumn) As 'Len',
LEN(REPLACE(StringColumn, ' ', '*')) As 'Len with replace',
DATALENGTH(StringColumn) As 'DataLength'
FROM @Temp
 
נשלח מוקדם מדי

שים לב ש datalength מחזירה את מספר התווים כפול שתיים,
מכיון שמדובר על שדה יוניקוד. אם השדה היה מוגדר varchar ולא nvarchar, אז datalength היתה מחזירה לך את מספר התווים המדוייק.
 
למעלה