#java #sql #sql-server
#java #sql #sql-сервер
Вопрос:
У меня есть SQL Server, и я использую SQL Management Studio. Я хочу выбрать значение по умолчанию для столбца из нескольких таблиц в базе данных. Например, у меня есть база данных DB. В БД у меня есть 3 таблицы — TableA, TableB и TableC. Все они имеют одинаковые столбцы. Я хочу получить значения по умолчанию для столбцов «Клиенты» для таблиц A, B и C.
Это должно быть что-то вроде этого:
SELECT Column_Default
FROM Information_Schema.Columns
WHERE Table_Schema = DB AND
Table_Name like 'table%' and
Column_Name = 'Customers'
Но в Table_Schema = DB есть ошибка. Я не уверен, что это должно выглядеть так, как синтаксис SQL. Он работает как MySQL, но не здесь.
Ответ №1:
SELECT COLUMN_DEFAULT
FROM Information_Schema.Columns
WHERE Table_Schema = 'dbo'
AND TABLE_NAME IN ('A','B','C')
AND COLUMN_NAME = 'Customers'
Вы были близки, вам просто нужны были одинарные кавычки вокруг имени схемы таблицы, также использование оператора IN для явного указания имен таблиц вместо использования поиска по шаблону может сделать запрос более надежным, если будет создана новая таблица с похожим именем.
Комментарии:
1. Проблема в том, что это работает, но все еще дает мне пустые результаты. Но этот запрос дает мне правильный вывод, но только для 1 таблицы: ВЫБЕРИТЕ object_definition(default_object_id) В КАЧЕСТВЕ определения ИЗ sys.columns, ГДЕ name =’A’ И object_id = object_id(‘dbo. Клиенты’)
2. @BorislavStefanov если вы получаете нулевые результаты с моим запросом, то это потому, что столбец не имеет значения по умолчанию