से mysql फ़ील्ड नाम क्या फ़ील्ड का चयन करना संभव है जो नाम स्ट्रिंग है?परिवर्तनीय
SELECT 'fieldname' FROM table
मैं ट्रिगर के लिए इस की जरूरत है गतिशील फ़ील्ड नाम कुछ की तरह
SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ;
से mysql फ़ील्ड नाम क्या फ़ील्ड का चयन करना संभव है जो नाम स्ट्रिंग है?परिवर्तनीय
SELECT 'fieldname' FROM table
मैं ट्रिगर के लिए इस की जरूरत है गतिशील फ़ील्ड नाम कुछ की तरह
SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ;
के लिए स्ट्रिंग अपने बाहरी अनुप्रयोग (PHP) की तरह, सुनिश्चित करें कि, बस MySQL बयान का निर्माण में है।
यदि स्ट्रिंग एक MySQL तालिका के अंदर है, तो आप नहीं कर सकते। MySQL में कोई eval() या ऐसा फ़ंक्शन नहीं है। निम्नलिखित असंभव है:
मान लीजिए कि आपके पास "स्तंभ नाम" फ़ील्ड के साथ एक टेबल 'क्वेरी' है जो तालिका "mytable" में कॉलम नामों में से एक को संदर्भित करता है। वहाँ 'जिज्ञासा' है कि आप columnName आप चाहते हैं का चयन करने के लिए अनुमति के अतिरिक्त कॉलम हो सकती है ...
INSERT INTO queries (columname) VALUES ("name")
SELECT (select columnname from queries) from mytable
आप तथापि PREPARED STATEMENTS के साथ काम कर सकते हैं। सावधान रहें यह बहुत हैकी है।
SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);
PREPARE stmt FROM @s;
EXECUTE stmt;
तैयार कथनों को ट्रिगर्स के भीतर अनुमति नहीं है ... – samrockon
शायद पार्टी में थोड़ा देर हो चुकी है, लेकिन क्या ... आप इस व्यवहार का उल्लेख बहुत हैकी है। लेकिन क्या आप शायद यह समझा सकते हैं कि यह क्यों है? क्योंकि यह समाधान मुझे बहुत मदद करता है, लेकिन मैं एक अस्थिर फिक्स पर निर्भर नहीं होना चाहता। – mahulst
कोड हैकी है क्योंकि यह सीधा एसक्यूएल सुविधाओं का उपयोग नहीं कर रहा है (क्योंकि ये सुविधाएं मौजूद नहीं हैं)। लेकिन चिंता न करें, यह स्थिर है और आप पर नहीं टूट जाएगा। दस मिनट पहले तक, मैं इसे उत्पादन में उपयोग कर रहा हूं! – dotancohen
आप एक से अधिक स्तंभ का चयन करना चाहते हैं:
SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.`COLUMNS` C
WHERE table_name = 'MyTb' AND COLUMN_NAME LIKE '%whatever%' INTO @COLUMNS;
SET @table = 'MyTb';
SET @s = CONCAT('SELECT ',@columns,' FROM ', @table);
PREPARE stmt FROM @s;
EXECUTE stmt;
मुझे समझ नहीं आता तुम क्या मतलब है –
कैसे आप एसक्यूएल चल रहे हैं? गतिशील एसक्यूएल पर पढ़ें। –
"स्ट्रिंग" नाम वाला एक फ़ील्ड? 'तालिका \ '' से \ 'स्ट्रिंग \' चुनें \ '? – jwueller