2011-04-27 20 views
11

मैं अपने बालों को खींच रहा हूं। मेरे पास एक बहुत ही सरल पोस्टग्रे डेटाबेस है, एक विशिष्ट तालिका में lName नामक एक कॉलम है (अपरकेस एन)। अब मैं postgre साथ जानता हूँ कि मैं lName बोली चाहिए, क्योंकि यह एक अपरकेस एनसरल पोस्टग्रेस्क्ल स्टेटमेंट - कॉलम नाम मौजूद नहीं है

मैं निम्न कथन से डेटाबेस क्वेरी करने के लिए कोशिश कर रहा हूँ शामिल हैं:

SELECT * FROM employee WHERE "lName" LIKE "Smith"

लेकिन मैं यह त्रुटि प्राप्त कर रहा हूँ:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: column "Smith" does not exist in .....

यहां समस्या क्या है? यह क्यों कह रहा है कि कॉलम "स्मिथ" है?

उत्तर

23

मुझे लगता है कि होगा:

SELECT * FROM employee WHERE "lName" LIKE 'Smith' 

(ध्यान दें विभिन्न उद्धरण; "foo" एक उद्धृत पहचानकर्ता होता है 'foo' एक स्ट्रिंग शाब्दिक है) सबसे एसक्यूएल बोलियों में,

इसके अलावा, एक LIKE एक वाइल्डकार्ड के बिना है = के बराबर; क्या आपका वाइल्डकार्ड शामिल करना है?

4

क्योंकि "Smith" एक पहचानकर्ता है, और उस स्थिति में, एक पहचानकर्ता को कॉलम होने की उम्मीद है। आप शायद क्या मतलब एक स्ट्रिंग अक्षर है, जो सिंगल कोट्स का उपयोग करता है: 'Smith'। तो

SELECT * FROM employee WHERE "lName" LIKE 'Smith' 

आप शायद भी स्ट्रिंग में एक वाइल्डकार्ड के लिए खोज करना चाहते हैं ('Smith%'?)। LIKE मिलान सामान्य नियमित अभिव्यक्ति मिलान के विपरीत, स्ट्रिंग की शुरुआत और अंत तक लगी हुई है।

संबंधित मुद्दे