Como concatenar valores nulos? Quando você tentar concatenar dois valores e um deles é nulo, a resposta será nulo. Porém tem um jeito de fazer isso funcionar basta usar o isnull ou coalesce.


DECLARE @var1 VARCHAR(50)    
DECLARE @var2 VARCHAR(50)     
SELECT @var1 ='Test'     
SELECT @var1 + @var2 -- NULL

O output será Null, então fazemos:


DECLARE @var1 VARCHAR(50)    
DECLARE @var2 VARCHAR(50)     
SELECT @var1 ='Test'    
SELECT @var1 + ISNULL(@var2,'' )     
SELECT @var1 + COALESCE(@var2,'' )

No SQL Server basta apenas executar esse comando.



SELECT tc.TABLE_NAME AS PrimaryKeyTable, tc.CONSTRAINT_NAME AS PrimaryKey, 
           COALESCE(rc1.CONSTRAINT_NAME, 'N/A' ) AS ForeignKey , 
           COALESCE(tc2.TABLE_NAME, 'N/A' ) AS ForeignKeyTable FROM
           INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc LEFT JOIN
           INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1 ON 
           tc.CONSTRAINT_NAME = rc1.UNIQUE_CONSTRAINT_NAME LEFT JOIN
           INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON 
           tc2.CONSTRAINT_NAME = rc1.CONSTRAINT_NAME 
           WHERE TC.CONSTRAINT_TYPE = 'PRIMARY KEY' 
           ORDER BY tc.TABLE_NAME,tc.CONSTRAINT_NAME,rc1.CONSTRAINT_NAME



A Microsoft liberou a Release Candidate 0 do SQL Server 2008, para quem se interessar só buscar no site https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395

Desde o SQL 2000, existe uma função chamada NEWID() e ela pode ajudar em momentos que queremos retornar uma linha aleatoria sem precisar fazer muita codificação. Vamos imaginar que voce gostaria de exibir quatro banners aleatorios e no banco de dados está o nome dos arquivos.

CREATE TABLE #Test (ID INT,Path VARCHAR(49))     
INSERT #Test VALUES(1, '1.jpg' )    
INSERT #Test VALUES(2, '2.jpg' )    
INSERT #Test VALUES(3, '3.jpg' )    
INSERT #Test VALUES(4, 'dominos.jpg' )    
INSERT #Test VALUES(5, 'mouse.jpg' )    
INSERT #Test VALUES(6, 'futebol.jpg' )    
INSERT #Test VALUES(7, 'teste.jpg' )    
INSERT #Test VALUES(8, 'carro.jpg' ) 

SELECT TOP 4 *    
FROM #Test    
ORDER BY NEWID()

Como retornar o valor máximo de uma coluna e seus respectivos valores.

Exemplo:

 

CREATE TABLE #MaxVal(id INT,VALUE INT,OtherCol CHAR(1));
    INSERT #MaxVal VALUES(1,1,'A');
    INSERT #MaxVal VALUES(1,2,'A');
    INSERT #MaxVal VALUES(1,3,'Z');
    INSERT #MaxVal VALUES(2,1,'A');
    INSERT #MaxVal VALUES(2,2,'X');
    INSERT #MaxVal VALUES(2,3,'A');
    INSERT #MaxVal VALUES(3,1,'A');
    INSERT #MaxVal VALUES(3,2,'Y');

Se você está interessado apenas no ID e o valor máximo da coluna é muito facil.

SELECT id,MAX(VALUE) AS VALUE    
FROM #MaxVal    
GROUP BY id;

OUTPUT:

ID|Value
-------------
1|3
2|3
3|2

Se voce precisa de toda a linha, precisaremos fazer um sub-select.

SELECT t.* FROM(    
SELECT id,MAX(VALUE) AS MaxValue    
FROM #MaxVal    
GROUP BY id) x    
JOIN #MaxVal t ON x.id =t.id    
AND x.MaxValue =t.VALUE

OUTPUT:

ID|Value|OtherCol
----------------------
3|2|Y
2|3|A
1|3|Z

Post migrado em :

http://programatik.soucafecomleite.com.br/sql-server-coalesce

Post migrado e atualizado em:

http://programatik.soucafecomleite.com.br/sql-adicionar-zero