regex - MySql - combine REGEXP and BETWEEN functions -
मेरे पास यह तालिका है।
+ -------- + ---- ------------ + | आईडी | E_id | + -------- + ---------------- + | 164462 | "3 1 2 4 6" | | 164463 | "185 1 2 4 6" | | 164464 | "3 1 2 1140 6" | | 164465 | "52 1 2 4 6" | | 164466 | "3 1 175 4 6" | | 164467 | "3 1 2 4 6" | | 164468 | "3 1 2 4 6" | | 164469 | "3 1 2500 4 6" | | 164470 | "82 1 2 4 6" | | 164471 | "3 1 2 4 6" | | 164472 | "3 1 50 4 6" | | 164473 | "3 1 2 4 6" | + -------- + ----------------- +मुझे वह पंक्तियां मिलेंगी जिनमें 175 और 2574 के बीच संख्याएं हैं, लेकिन संख्याएं केवल
[[: space:]] से अलग हो गए हैं।
मुझे इस तरह mysql क्वेरी का उपयोग करने की कोशिश की गई थी:
select * तालिका_नाम से जहां e_id के बीच REGEXP '[[: space:]] 175 [[अंतरिक्ष:]]' और REGEXP '[[: अंतरिक्ष:]] 2574 [[: अंतरिक्ष:]]';
... और इस तरह के बहुत सारे संयोजन हैं, लेकिन कोई भाग्य नहीं है ...
मदद के लिए धन्यवाद!:)
आपको एक ही डेटाबेस कॉलम में इस तरह की "सूची" नहीं होना चाहिए इस स्थिति में, आपको एक समय में एक
e_id लिंक करने के लिए एक और तालिका होनी चाहिए।
फिर भी, यह आपकी समस्या का समाधान है यदि सीमाएं गतिशील नहीं हैं < / Strong>: 175 और 2574 के बीच प्रत्येक नंबर से मिलान करने के लिए एक regex बनाएं:
SELECT * से से तालिका_नाम WHERE e_id REGEXP ("[[:: space:]] (1 (7 [5-9] ] | [89] \ घ) | [2-9] \ घ {2} | 1 \ घ {3} | 2 ([0-4] \ घ {2} | 5 [0-6] \ घ | 57 [0-4])) [[अंतरिक्ष:]] ")
Regex विवरण:
1 (7 [5-9] ] | [89] \ d) 175 से 199 तक मेल खाएगा
[2- 9] \ d {2} 200 से 99 9 के बीच मेल खाता होगा
1 \ d {3} 1000 से 1999 तक मेल खाएगा
2 ([0-4] \ d {2} 2000 से मेल खाएगा 2499 तक
25 [0-6] \ d 2500 से 2699 से मेल खाएगा
257 [0-4] 2570 से 2574 तक मैच करें
यह समाधान बदसूरत है, क्योंकि आपका डेटाबेस बदसूरत है।
यह विशिष्ट सीमाओं के लिए काम करता है, लेकिन जैसा कि आप देख सकते हैं कि आपको किसी अन्य रेगेक्स को फिर से लिखना होगा यदि आप इन सीमाओं को परिवर्तित करें।
क्या आप sh हो सकता है:
आपकी आईडी के साथ एक तालिका, "ई-एड्स" वाला दूसरा और दूसरा, पहले दोनों को लिंक करने के लिए:
बनाएं टैब ' तत्व` (`आईडी` INT नहीं, स्वत: संक्रमण, प्राथमिक कुंजी (` आईडी`)); टैबलेट `अन्य_एलिमेंट्स 'बनाएं (` ई_आईडी` INT नहीं नल एटऑन्ग्रेमेंट, प्राइमरी कुंजी (`ई_आईडी`)); तालिका `लिंक_table` (` आईडी` INT नहीं बना है, 'ई_आईडी` INT नहीं, इंडैक्स `आईडी` (` आईडी`), इंडेक्स `ई_आईडी` (` ई_आईडी`), CONSTRAINT `एफके _एललेमेंट्स' विदेशी कुंजी (` आईडी` ) संदर्भ `तत्वों '(` आईडी`) डिलीइट कैसैडे, कॉन्ट्रैक्ट' एफके ___अलेमेंट्स 'विदेशी कुंजी (`ई_आईडी`) पर अद्यतन कसैड पर डिलीइट कैसैड पर अद्यतन कसैड पर` अन्य_एलिमेंट` (`ई_आईडी`) संदर्भ;
तब आप जो आसानी से चाहते हैं, उसे प्राप्त करने में सक्षम होंगे:
तत्वों से चयन करें & amp; JOIN link_table l पर l.id = e.id WHERE L.e_id के बीच 175 और 2574
Comments
Post a Comment