Rumah >pangkalan data >tutorial mysql >Bagaimanakah Dynamic SQL Boleh Mensimulasikan SELECT * KECUALI dalam Pelayan SQL untuk Penyahpepijatan?
*SQL Dinamik: Penyelesaian untuk SELECT KECUALI dalam Penyahpepijatan Pelayan SQL**
Walaupun SELECT *
secara amnya tidak digalakkan dalam kod pengeluaran, ia boleh membantu semasa nyahpepijat. Walau bagaimanapun, SQL Server tidak menawarkan klausa "SELECT * EXCEPT" langsung. Had ini boleh diatasi menggunakan SQL dinamik.
Katakanlah kita mahu mendapatkan semula semua lajur daripada MY_Table
jadual kecuali lajur "penerangan". Begini cara melakukannya dengan SQL dinamik:
<code class="language-sql">DECLARE @sql VARCHAR(8000), @table_id INT, @col_id INT; SET @sql = 'SELECT '; SELECT @table_id = id FROM sysobjects WHERE name = 'MY_Table'; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND name <> 'description'; WHILE (@col_id IS NOT NULL) BEGIN SELECT @sql = @sql + name FROM syscolumns WHERE id = @table_id AND colid = @col_id; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND colid > @col_id AND name <> 'description'; IF (@col_id IS NOT NULL) SET @sql = @sql + ','; PRINT @sql; END; SET @sql = @sql + ' FROM MY_table'; EXEC (@sql);</code>
Kod ini membina pernyataan SELECT
secara dinamik dengan mengulangi lajur jadual dan menambahkan hanya lajur yang bukan "perihalan" pada pertanyaan. Ini secara berkesan mensimulasikan tingkah laku "PILIH * KECUALI" yang dikehendaki. Pendekatan ini boleh dirangkumkan dalam fungsi atau prosedur tersimpan untuk kebolehgunaan semula. Ingat, kaedah ini bertujuan semata-mata untuk penyahpepijatan dalam persekitaran bukan pengeluaran kerana batasan dan pertimbangan keselamatan yang wujud.
Atas ialah kandungan terperinci Bagaimanakah Dynamic SQL Boleh Mensimulasikan SELECT * KECUALI dalam Pelayan SQL untuk Penyahpepijatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!