2012-03-12 12 views
17

मुझे एहसास है कि अगर यह बनाया गया था तो मैं तालिका को संशोधित कर सकता हूं, लेकिन मुझे लगता है कि मैं नहीं कर सकता, मेरे पास एक सारणी है:तालिका में स्ट्रिंग की शुरुआत के साथ mysql मिलान स्ट्रिंग

abcd 
abde 
abdf 
abff 
bbsdf 
bcggs 
... snip large amount 
zza 

तालिका के मान लंबाई तय नहीं कर रहे हैं। मेरे पास abffagpokejfkjs जैसे मिलान करने के लिए एक स्ट्रिंग है। यदि यह इसका उल्टा था, मैं

SELECT * from table where value like 'abff%' 

कर सकता है, लेकिन मैं मान जो एक स्ट्रिंग है प्रदान की जाती है की शुरुआत से मेल खाता चयन करना होगा।

क्या ऐसा करने का कोई त्वरित तरीका है, या क्या इसे मैच खोजने के लिए तालिका के माध्यम से पुनरावृत्ति की आवश्यकता है?

+0

मुझे समस्या समझ में नहीं आती है। आप किस मूल्य को वापस करने की कोशिश कर रहे हैं? आप केवल 'LEFT (मान, 4) 'या' LIKE' का उपयोग क्यों नहीं कर सकते? –

+0

मैं LEFT का उपयोग नहीं कर सकता क्योंकि मुझे नहीं पता कि परिणाम कितने पात्र हैं - 1 हो सकता है, 25 हो सकता है। सभी संख्याओं के माध्यम से लूप हो सकता है लेकिन तेज़ नहीं लगता है। – Woody

उत्तर

34

इस प्रयास करें:

SELECT col1, col2 -- etc... 
FROM your_table 
WHERE 'abffagpokejfkjs' LIKE CONCAT(value, '%') 

ध्यान दें कि यह एक सूचकांक प्रभावी ढंग से उपयोग नहीं करेगा जब आप रिकॉर्ड की एक बहुत कुछ है तो यह धीमी गति से किया जाएगा।

यह भी ध्यान रखें कि value (उदा। %) में कुछ वर्णों का अर्थ विशेष रूप से एक विशेष अर्थ के रूप में व्याख्या किया जा सकता है, जो अवांछित हो सकता है।

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