SQL 在 WHERE 子句中查看子字符串?
SQL view with substring in WHERE clause?
我想将此查询放入新视图中。供您参考 dbo.TransferAS400Auftrag
也是一种观点。
SELECT dbo.TransferAS400Auftrag.Angebotsnummer AS AngNr1,
dbo.CSDokument.Angebotsnummer AS AngNr2,
dbo.TransferAS400Auftrag.OfferAngebotsnummer AS OAngNr1,
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10) AS OAngNr1_SUB10,
dbo.CSDokument.OfferAngebotsnummer AS OAngNr2,
substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10) AS OAngNr2_SUB10
FROM dbo.TransferAS400Auftrag INNER JOIN
dbo.CSDokument ON dbo.TransferAS400Auftrag.Angebotsnummer =
dbo.CSDokument.Angebotsnummer
WHERE (LEN(dbo.TransferAS400Auftrag.OfferAngebotsnummer) > 10) AND
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10)
= substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10)
但是 management studio 的视图生成器总是将 substring() = substring()
部分从 where 子句更改为 INNER JOIN
部分。但是有了这个更改,我无法保存视图 (error- object reference not set to an instance of an object)
。为什么不能在 WHERE 子句中使用 substring() = substring()
?或者我可以通过其他方式达到目标吗?
嗯,没问题,CREATE VIEW 成功了。估计真的是builder的问题。谢谢指点。
只需使用 Transact SQL 创建它,而不是像这样使用 management studio 创建视图 windows:
CREATE VIEW AS ViewName
AS
SELECT dbo.TransferAS400Auftrag.Angebotsnummer AS AngNr1,
dbo.CSDokument.Angebotsnummer AS AngNr2,
dbo.TransferAS400Auftrag.OfferAngebotsnummer AS OAngNr1,
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10) AS OAngNr1_SUB10,
dbo.CSDokument.OfferAngebotsnummer AS OAngNr2,
substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10) AS OAngNr2_SUB10
FROM dbo.TransferAS400Auftrag INNER JOIN
dbo.CSDokument ON dbo.TransferAS400Auftrag.Angebotsnummer =
dbo.CSDokument.Angebotsnummer
WHERE (LEN(dbo.TransferAS400Auftrag.OfferAngebotsnummer) > 10) AND
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10)
= substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10);
我想将此查询放入新视图中。供您参考 dbo.TransferAS400Auftrag
也是一种观点。
SELECT dbo.TransferAS400Auftrag.Angebotsnummer AS AngNr1,
dbo.CSDokument.Angebotsnummer AS AngNr2,
dbo.TransferAS400Auftrag.OfferAngebotsnummer AS OAngNr1,
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10) AS OAngNr1_SUB10,
dbo.CSDokument.OfferAngebotsnummer AS OAngNr2,
substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10) AS OAngNr2_SUB10
FROM dbo.TransferAS400Auftrag INNER JOIN
dbo.CSDokument ON dbo.TransferAS400Auftrag.Angebotsnummer =
dbo.CSDokument.Angebotsnummer
WHERE (LEN(dbo.TransferAS400Auftrag.OfferAngebotsnummer) > 10) AND
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10)
= substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10)
但是 management studio 的视图生成器总是将 substring() = substring()
部分从 where 子句更改为 INNER JOIN
部分。但是有了这个更改,我无法保存视图 (error- object reference not set to an instance of an object)
。为什么不能在 WHERE 子句中使用 substring() = substring()
?或者我可以通过其他方式达到目标吗?
嗯,没问题,CREATE VIEW 成功了。估计真的是builder的问题。谢谢指点。
只需使用 Transact SQL 创建它,而不是像这样使用 management studio 创建视图 windows:
CREATE VIEW AS ViewName
AS
SELECT dbo.TransferAS400Auftrag.Angebotsnummer AS AngNr1,
dbo.CSDokument.Angebotsnummer AS AngNr2,
dbo.TransferAS400Auftrag.OfferAngebotsnummer AS OAngNr1,
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10) AS OAngNr1_SUB10,
dbo.CSDokument.OfferAngebotsnummer AS OAngNr2,
substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10) AS OAngNr2_SUB10
FROM dbo.TransferAS400Auftrag INNER JOIN
dbo.CSDokument ON dbo.TransferAS400Auftrag.Angebotsnummer =
dbo.CSDokument.Angebotsnummer
WHERE (LEN(dbo.TransferAS400Auftrag.OfferAngebotsnummer) > 10) AND
substring(dbo.TransferAS400Auftrag.OfferAngebotsnummer, 1, 10)
= substring(dbo.CSDokument.OfferAngebotsnummer, 1, 10);