Вы можете посмотреть значение по умолчанию для столбца:
SELECT COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @SchemaName AND
TABLE_NAME = 'Address' AND
COLUMN_NAME = 'District'
, а затем включить его в запрос. Вы также можете сделать это напрямую, но это становится немного сложнее, потому что типы могут не совпадать.
Но, если distinct
- строка, вы можете использовать:
delete from Address
where District = (select default_value
from information_schema.columns
where table_schema = @table_schema and
table_name = 'Address' and
column_name = 'District'
);
Важно предостережение: при этом удаляется любая строка, в которой значение соответствует значению по умолчанию, даже если это значение было явно назначено столбцу.
И, если значение по умолчанию NULL
, то оно немного отличается нужны сравнения.