Sql内部连接查询条件时的具体值

时间:2017-07-28 09:37:55

标签: sql sql-server

我有以下查询:

SELECT Art.Id, Art.Nummer, Art.Serie, Art.EANBarcode, Art.Preis, Art.Volumen, Art.Vater, Art.Name, Art.Amazon, Kat.Name, Subkat.Name, Subsubkat.Name FROM
tbArtikel As Art 
INNER JOIN tbKategorie As Kat ON Art.FK_Kategorie_ID=Kat.Id
INNER JOIN tbSubkategorie As Subkat ON Art.FK_SubKategorie_ID=Subkat.Id
INNER JOIN tbSubsubkategorie As Subsubkat ON Art.FK_SubSubKategorie_ID=Subsubkat.Id
WHERE RIGHT(Art.Nummer,2)='.1'

情况是Art.FK_SubSubKategorie_ID可以为null(开发人员设置为0而不是null) - 知道这个坏习惯但是它是怎么回事。但是我想制作如果Art.FK_SubSubKategorie_ID确实为0我想要获取该记录并且对于Subsubkat.Name只是放空字符串。希望得到了我的观点。

如果可能的其他问题(PS): 如果我做的话,在哪里有任何差异:

WHERE RIGHT(Art.Nummer,2)='.1'
WHERE Art.Nummer LIKE '%.1'

甚至:

WHERE NOT RIGHT(Art.Nummer,2)='.1'
WHERE Art.Nummer NOT LIKE '%.1'

我知道就像使用索引一样,但我只是在谈论在这种情况下两者是否都能正常工作并且搜索完全相同?我正在使用它来获取具体文章。

1 个答案:

答案 0 :(得分:1)

试试这个;

SELECT Art.Id, Art.Nummer, Art.Serie, 
Art.EANBarcode, Art.Preis, Art.Volumen, Art.Vater, Art.Name, 
Art.Amazon, Kat.Name, Subkat.Name, ISNULL(Subsubkat.Name,'')
FROM
tbArtikel As Art 
INNER JOIN tbKategorie As Kat ON Art.FK_Kategorie_ID=Kat.Id
INNER JOIN tbSubkategorie As Subkat ON Art.FK_SubKategorie_ID=Subkat.Id
LEFT OUTER JOIN tbSubsubkategorie As Subsubkat ON Art.FK_SubSubKategorie_ID=Subsubkat.Id
WHERE RIGHT(Art.Nummer,2)='.1'