2013-08-19 7 views
11

से त्रुटि 'पुनरावृत्ति-ऑपरेटर ऑपरेंड अमान्य' मिली है मुझे मेरी MySQL तालिका से कुछ परिणामों का चयन करने के लिए नियमित अभिव्यक्ति का उपयोग करने में समस्या हो रही है।# 1139 - regexp

मैं इस क्वेरी

SELECT text 
FROM `articles` 
WHERE content REGEXP '.*<img.*?src=\"http://www' 
ORDER BY date DESC 

उपयोग कर रहा हूँ और यह

#1139 - Got error 'repetition-operator operand invalid' from regexp 

मैं नोटपैड के साथ ++ regex परीक्षण किया कहते हैं और यह काम करता है, क्यों MySQL मुझे इस त्रुटि दे रहा है और मैं इसे कैसे ठीक कर सकते हैं ?

+0

यह किसी भी मामूली आकार तालिकाओं के साथ अच्छी तरह से काम नहीं करेगा। – NullUserException

+0

@NullUserException मैं इस चयन का एक से अधिक बार उपयोग नहीं करूँगा, मुझे यह देखने के लिए एक बार यह देखने की ज़रूरत है कि मेरे टेबल में कौन से रिकॉर्ड रिश्तेदार यूआरएल की बजाय छवियों के लिए पूर्ण यूआरएल हैं और उन्हें ठीक करें, तो मुझे अब इसकी आवश्यकता नहीं होगी – BackSlash

+0

आप कोशिश कर सकते हैं 'पसंद'% ErickBest

उत्तर

29

के अनुसार MySQL manual

MySQL नियमित अभिव्यक्ति के हेनरी स्पेंसर के कार्यान्वयन, जो POSIX के साथ अनुरूपता के उद्देश्य से है का उपयोग करता है 1003,2

POSIX regexes एक गैर के रूप में प्रश्न चिह्न ? का उपयोग कर समर्थन नहीं करते - पीसीआरई (पर्ल संगत नियमित अभिव्यक्तियों) जैसे स्टार और प्लस क्वांटिफायर के लिए लालची (आलसी) संशोधक। इसका मतलब है कि आप +? और *?

ऐसा लगता है कि आपको केवल लालची संस्करण का उपयोग करना होगा, जो अभी भी काम करना चाहिए।

'<img[^>]*src="http://www'

नोट:: " भाग निकले की जरूरत नहीं है और शुरुआत में .* निहित है <img style="/*some style*/" src="a.png"> <script src="www.example.com/js/abc.js"> जैसी चीजों का मिलान बचने के लिए आप एक नकार चरित्र वर्ग का उपयोग कर सकते हैं।

+0

That doesn't work. if i have '

-1

आप कोशिश कर सकते हैं,

SELECT 
     text 
     , 
    IF (content LIKE '%<img src="http://%', text , content LIKE '%<img style=%') 
as imageText 

FROM articles ORDER BY date DESC 

यह पहली के लिए यह बजाय <img style= के लिए दिखेगा जहां सामग्री <img src="http:// है अगर यह तो नहीं मिल रहा है की जाँच करेगा।

उम्मीद है कि यह मदद करता है।

चेक फिडल: http://sqlfiddle.com/#!2/6a2f0/13/0

+0

क्यों _DownVote _? ... अगर आपका _DownVote_ वास्तविक है तो कृपया एक टिप्पणी छोड़ें ... शांति !! – ErickBest