Sql-在将字段插入表时如何在字段上添加条件?
我需要在sql表中插入字符串,我必须在其中添加条件。例如:Sql-在将字段插入表时如何在字段上添加条件?,sql,sql-server,string,insert,Sql,Sql Server,String,Insert,我需要在sql表中插入字符串,我必须在其中添加条件。例如: SELECT ii.Terminating_Item_Site_ID, ii.Originating_Item_Site_ID, loc.ServiceAddress, loc.ServiceCity, loc.ServiceState, (ii.Originating_Item_Site_ID + ' - ' + loc.ServiceAddress + ', ' + loc.ServiceCi
SELECT ii.Terminating_Item_Site_ID,
ii.Originating_Item_Site_ID,
loc.ServiceAddress,
loc.ServiceCity,
loc.ServiceState,
(ii.Originating_Item_Site_ID + ' - ' + loc.ServiceAddress + ', ' + loc.ServiceCity + ', ' + loc.ServiceState) AS OrigSite
FROM tblItemInventory ii
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item_Site_ID
我需要在插入字段OrigSite
时设置一个条件,因此如果ii.原始项目\u站点\u ID
或loc.ServiceAddress
或loc.ServiceCity
或loc.ServiceState
为null,我不需要包含它,因此我将其替换为“”
发生的情况是,如果上述任何字段为null
,OrigSite也将变为null
我尝试在
时使用,但我无法管理它。
我正在使用SQLServer2008R2
有人能帮忙吗?当您连接字符串时,其中一个字符串为空,连接的结果也为空。您可以在每个部分上使用isnull('string','')来避免这种行为。下面是代码示例:
SELECT ii.Terminating_Item_Site_ID,
ii.Originating_Item_Site_ID,
loc.ServiceAddress,
loc.ServiceCity,
loc.ServiceState,
(ISNULL(ii.Originating_Item_Site_ID,'')
+ ' - ' + ISNULL(loc.ServiceAddress,'')
+ ', ' + ISNULL(loc.ServiceCity,'')
+ ', ' + ISNULL(loc.ServiceState,'')) AS OrigSite
FROM tblItemInventory ii
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item
ISNULL是一个系统函数,它用预先定义的值替换null值。
Colasce是另一个类似于ISNULL的,但Coalesce是标准sql的一部分。
ISNULL是特定于T-sql的。
更标准,更便携
SELECT ii.Terminating_Item_Site_ID,
isnull(ii.Originating_Item_Site_ID,''),
isnull(loc.ServiceAddress,''),
isnull(loc.ServiceCity,''),
isnull(loc.ServiceState,''),
(isnull((ii.Originating_Item_Site_ID + ' - ' + isnull(loc.ServiceAddress,'') + ', ' + isnull(loc.ServiceCity,'') + ', ' + isnull(loc.ServiceState,'')) AS OrigSite
FROM tblItemInventory ii
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item_Site_ID
这不起作用,isnull必须用于连接字符串的每个部分,而不是在连接中的每个列上。如果一部分为null,则整个连接变为null。因此isnull适用于整个连接。是的,您可以从连接结果中替换null,但仍会丢失其余子字符串。如果子字符串为空,则不会丢失任何存在的数据。此外,coalecse返回所提供字段的第一个NOTNULL,因此在您的示例中,您可以获得ii.origing_Item_Site_ID或“-”
SELECT ii.Terminating_Item_Site_ID,
isnull(ii.Originating_Item_Site_ID,''),
isnull(loc.ServiceAddress,''),
isnull(loc.ServiceCity,''),
isnull(loc.ServiceState,''),
(isnull((ii.Originating_Item_Site_ID + ' - ' + isnull(loc.ServiceAddress,'') + ', ' + isnull(loc.ServiceCity,'') + ', ' + isnull(loc.ServiceState,'')) AS OrigSite
FROM tblItemInventory ii
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item_Site_ID