私は関数が必要ですが、それを正しく取得できないようです。ここや他の場所で例を見てきましたが、これを正しく取得できないようです。クエリにオプションの項目を含める必要があります。このクエリがあります (これは機能します) ):
SELECT TOP 100 PERCENT SKU, Description, LEN(CONVERT(VARCHAR
(1000),Description)) AS LenDesc FROM tblItem
WHERE Title = @Title AND Manufacturer = @Manufacturer
ORDER BY LenDesc DESC
これは関数内で機能しますが、この検索では製造元はオプションです。これは、同様のアイテムの説明を見つけることです。何も存在しない場合、他のクエリは次のようになります。
SELECT TOP 100 PERCENT SKU, Description, LEN(CONVERT(VARCHAR
(1000),Description)) AS LenDesc FROM tblItem
WHERE Title = @Title ORDER BY LenDesc DESC
製造元が欠落しています。製造元の値が存在するかどうかに基づいて、関数を使用してクエリを使用する方法を教えてください。その理由は、最初に SKU の説明をチェックし、それが存在しない場合は、このメソッドを使用して類似製品から説明を取得し、類似製品の説明で追加される製品を更新する関数を用意するためです。
これまでの機能は次のとおりです。
ALTER FUNCTION [dbo].[GetDescriptionByTitleManufacturer]
(
@Title varchar(400),
@Manufacturer varchar(160)
)
RETURNS TABLE
AS
RETURN (
SELECT TOP 100 PERCENT SKU, Description, LEN(CONVERT(VARCHAR
(1000),Description)) AS LenDesc FROM tblItem
WHERE Title = @Title AND Manufacturer = @Manufacturer
ORDER BY LenDesc DESC
)
BEGIN と IF...ELSE を追加しようとしましたが、試行するたびにエラーや構文の問題が発生します。この疑似関数のようなことを実行できるようにしたい (これは機能しません)。
ALTER FUNCTION [dbo].[GetDescriptionByTitleManufacturer]
(
@Title varchar(400),
@Manufacturer varchar(160)
)
RETURNS TABLE
AS
BEGIN
IF (@Manufacturer = Null)
RETURN (
SELECT TOP 100 PERCENT SKU, Description, LEN(CONVERT(VARCHAR
(1000),Description)) AS LenDesc FROM tblItem
WHERE Title = @Title ORDER BY LenDesc DESC
)
ELSE
RETURN (
SELECT TOP 100 PERCENT SKU, Description, LEN(CONVERT(VARCHAR
(1000),Description)) AS LenDesc FROM tblItem
WHERE Title = @Title AND Manufacturer = @Manufacturer
ORDER BY LenDesc DESC
)
終わり