2015-10-08 15 views
7

मेरे पास character varying एक तालिका में प्रविष्टियां हैं जहां कुछ (सभी नहीं) मानों में प्रतिशत शामिल हैं, उदाहरण के लिए, '12%', '97%', आदि। मैं उन सभी मानों को ढूंढना चाहता हूं जिनमें प्रतिशत शामिल हैं। दूसरे शब्दों में, मैं उन सभी मानों को ढूंढना चाहता हूं जो प्रतिशत चिह्न ('%') के साथ समाप्त होते हैं।एक LIKE क्वेरी का उपयोग करके PostgreSQL में आपको शाब्दिक प्रतिशत चिह्न (%) कैसे मिल सकता है?

उत्तर

0

मैं नियमित अभिव्यक्ति का उपयोग कर समाप्त हो गया:

select * from my_table where my_column ~ '%$'; 

हालांकि, मैं अब भी अगर यह LIKE ऑपरेटर/तुलना का उपयोग कर सकता है जानना चाहते हैं।

+1

http://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-LIKE "* बिना अन्य पात्रों के मिलान, संबंधित एक शाब्दिक अंडरस्कोर या प्रतिशत चिह्न मिलान करने के लिए पैटर्न में चरित्र से बचने वाले चरित्र से पहले होना चाहिए * " –

5

आप इस तरह की कोशिश कर सकते हैं:

SELECT * FROM my_table WHERE my_column LIKE '%\%%' ESCAPE '\'; 

स्वरूप

<like predicate> ::= 
     <match value> [ NOT ] LIKE <pattern> 
     [ ESCAPE <escape character> ] 

<match value> ::= <character value expression> 

<pattern> ::= <character value expression> 

<escape character> ::= <character value expression> 
+0

यदि आपके पास' standard_conforming_strings' विकल्प बंद है ('standard_conforming_strings;' दिखाएं 'द्वारा चेक किया जा सकता है, तो आपको बैकस्लाश को दोगुनी करने की आवश्यकता है: ' चुनें * my_table से my_column LIKE ' % \\ %% 'ESCAPE' \\ '; ' और दोनों मामलों में (' standard_conforming_strings' के बावजूद) आप डुबकी बैकस्लैश के साथ एस्केप स्ट्रिंग सिंटैक्स का उपयोग कर सकते हैं: ' चुनें * my_table से my_column LIK ई ई '% \\ %%' एस्केप ई '\\'; ' –

3

आप शाब्दिक% चिह्न से बचने के लिए किया है।

SELECT * FROM my_table WHERE my_column LIKE '%\%'; 

इस मामले पहले % संकेत my_column में किसी भी शुरू कर अनुक्रम से मेल खाती है: डिफ़ॉल्ट रूप से एस्केप वर्ण बैकस्लैश है। शेष \% को शाब्दिक% वर्ण के रूप में व्याख्या किया जाता है। संयोजन इसलिए है:% चरित्र में समाप्त होने वाली किसी भी चीज़ से मेल खाता है।

SQLFiddle

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