sqlite- שינוי type של שדה אחרי הכנסת נתונים
-
שלום רב,
יש לי טבלה שכשייצרו אותה משום מה לא הגדירו לאחד השדות type, השדה אמור להיות INTEGER, עד עכשיו זה לא גרם לבעיות אבל פתאום בזמן האחרון כששומרים נתונים הערך בשדה זה נשמר כ-FLOAT לדוגמא אם רוצים להכניס לשדה את המספר 4 זה נכנס כ-4.0, וזה גורם להרבה בעיות במיוחד בסינון נתונים.השאלה אם כעת כבר שיש נתונים יש אפשרות להגדיר את הסוג של השדה הזה או שה יכול לגרום לבעיות? אם אפשר אז כיצד?
אשמח לשמוע חוות דעת מקצועית!
תודה רבה -
יש כזה דבר בsqlite ללא טיפוס? לא נראה לי.
עכ"פ בSQLITE א"א לשנות טיפוס של שדה בטבלה וגם לא להסירו. אז יש לך שתי אפשרויות:
אחת -פשוטה וטובה לדעתי: צור טבלה חדשה עם אותם עמודות עם השינוי מfloat לint,
ואח"כ תעתיק את הנתונים בשאילתה מהטבלה הישנה לחדשה, ואז תוכל למחוק את הישנה ולשנות את שמה של החדשה לשם הקודם.
השניה, לשנות את שם השדה, ואז להוסיף שדה חדש עם השם המקורי מסוג int, ואח"כ לעדכן את ערכו של השדה החדש עם שאילתה פשוטה. -
הוסיפו את השדה הזה בקוד אחרי יצירת הטבלה : 'ALTER TABLE students ADD COLUMN teacherId'
וכך קרה שלא הגדירו סוג.
כנראה אשתמש באפשרות הראשונה שהצעת.
תודה רבה! -
כי כשאני רוצה לשלוף תלמידים שה-teacherId שווה לדוגמא 4 אז הוא לא מוצא תלמידים כאלה כי ה-teacherId שלהם שווה 4.0 ולא 4.
בנתיים מה שעשיתי עד שאטפל בטבלאות עצמן זה להמיר בשאילתה את השדה ל-INT ואז לשאול עליו.
4=((SELECT * FROM students WHERE ((CAST(teacherId AS INT