Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak możemy użyć ISNULL do wszystkich nazw kolumn w SQL Server 2008?

Możesz użyć ISNULL wiele razy w tej samej instrukcji SQL dla różnych kolumn, ale musisz napisać to osobno dla każdej kolumny:

SELECT
    ISNULL(ProductName, 'No Data') AS ProductName,
    ISNULL(CAST(UnitPrice AS NVARCHAR), 'No Data') AS UnitPrice, 
    ISNULL(CAST(UnitsInStock AS NVARCHAR), 'No Data') AS UnitsInStock,
    ISNULL(CAST(UnitsOnOrder AS NVARCHAR), 'No Data') AS UnitsOnOrder
FROM tbl

Jeśli tworzysz dynamiczne zapytanie SQL, możesz teoretycznie zebrać listę kolumn w tabeli i wygenerować zapytanie z ISNULL na każdej z nich. Na przykład:

DECLARE @SQL nvarchar(max)

SET @SQL = 'SELECT '

SELECT @SQL = @SQL + 'ISNULL(CAST([' + sc.name + '] AS NVARCHAR), ''No Data'') AS [' + sc.name + '],'
FROM sys.objects so
INNER JOIN sys.columns sc ON sc.object_id = so.object_id
WHERE so.name = 'tbl'

-- Remove the trailing comma
SELECT @SQL = LEFT(@SQL, LEN(@SQL) - 1) + ' FROM tbl'

EXEC sp_sqlexec @SQL

Ten kod ma problemy podczas konwertowania niektórych typów kolumn, takich jak znaczniki czasu, na nvarchar, ale ilustruje technikę.

Pamiętaj, że jeśli masz inną kolumnę, która powinna zostać zwrócona, jeśli wartość ma wartość null, możesz użyć POŁĄCZENIE wyrażenie takie jak to:

SELECT COALESCE(ProductName, P_Id) AS Product...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 najlepszych narzędzi do modelowania danych dla SQL Server

  2. Jakie mogą być dobre sposoby wdrażania aplikacji internetowych ASP.Net?

  3. Jak używać ROW_NUMBER()?

  4. Jak przyspieszyć wstawianie zbiorcze do MS SQL Server za pomocą pyodbc?

  5. Implementacja wspólnego wskaźnika wydajności MS SQL Server