Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pernyataan SQL IF diabaikan

Martin pasti menyukai sesuatu. Barang-barang di dalam IF sedang ditangani oleh pengurai pada waktu penguraian dan mengabaikan apakah IF . Anda akan berhasil. Ini adalah alasan yang sama yang tidak dapat Anda lakukan:

IF 1 = 1
  CREATE TABLE #x(a INT);
ELSE
  CREATE TABLE #x(b INT);

Salah satu solusinya adalah dengan menggunakan SQL dinamis:

IF EXISTS ...
BEGIN
  BEGIN TRANSACTION;

  DECLARE @sql NVARCHAR(MAX);

  SET @sql = N'
        DELETE FROM [dbo].[Notes]
        WHERE [EntityId] IS NULL 
        AND [EntityType] IS NULL
        --Delete notes where the corresponding contact or account has been deleted.
        OR [ID] IN (9788, 10684, 10393, 10718, 10719)

        --Populate new columns with all existing data
        UPDATE [dbo].[Notes]
        SET [AccountId] = [EntityId]
        WHERE [EntityType] = 1

        UPDATE [dbo].[Notes]
        SET [ContactId] = [EntityId]
        WHERE [EntityType] = 2

        --Delete EntityId and EntityType columns from the Notes table
        ALTER TABLE [dbo].[Notes]
        DROP COLUMN [EntityId], [EntityType]';

    EXEC sp_executesql @sql;

    COMMIT TRANSACTION;
END

Tapi Anda tetap harus yakin bahwa keduanya kolom ada di sana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan hasil ekspor dalam format CSV nyata di SQL Server Management Studio?

  2. SQL Server:haruskah saya menggunakan tabel information_schema di atas tabel sistem?

  3. Jatuhkan semua properti yang diperluas di SQL Server

  4. Bagaimana cara mengubah ruang kosong menjadi nilai nol, menggunakan SQL Server?

  5. Apa itu Connect Timeout dalam string koneksi server sql?