4

SQL Server 2008 R2 で、日付が NULL の場合に文字列に変換する SQL クエリを作成したいと考えています。例えば...

    Date                            ShipmentRef     RecieptNo
    2009-01-01 03:12:11.596         DS298-YYY       18060
                                    FM298-YYY       95464
    2010-11-11 08:33:55.974         IL298-YYY       56703
    2003-08-01 07:00:44.846         UI835-XYX       40264
                                    US655-YXY       34643
    2004-03-07 12:46:33.352         WE242-XXX       83755

上記のデータは、現在のデータがどのように見えるかのサンプル テーブルです。SELECT クエリを実行すると、次のようにデータが返されます。

    Date                            ShipmentRef     RecieptNo
    2009-01-01 03:12:11.596         DS298-YYY       18060
    InsertRandomStringHere          FM298-YYY       95464
    2010-11-11 08:33:55.974         IL298-YYY       56703
    2003-08-01 07:00:44.846         UI835-XYX       40264
    InsertRandomStringHere          US655-YXY       34643
    2004-03-07 12:46:33.352         WE242-XXX       83755

CASE と CONVERT のどちらが良いかわかりません。あなたが私に与える助けは非常に高く評価されます。

4

5 に答える 5

7

SQL サーバーを仮定します。

SELECT ISNULL(CONVERT(nVarChar(30), Date, 121), 'InsertRandomStringHere') 

デモ

CAST と CONVERT (Transact-SQL)

于 2012-12-20T09:11:48.057 に答える
4
COALESCE(datefield, 'InsertRandomStringHere')

(ただし、他の人が指摘しているように、一部の DBMS では、追加の型キャスト操作を行う必要がある場合があります)。

于 2012-12-20T09:08:08.180 に答える
1

これを試して 。これはwrtomysqlです

select if(Date <> '',Date,'xxxxxxx'),ShipmentRef,RecieptNo from table
于 2012-12-20T09:10:57.110 に答える
1

それは、正確に何を達成したいかによって異なります。

列の各値は (少なくとも MS-SQL では) 同じ型である必要があるため、日付の場合に「ランダム文字列」が必要な場合は、Date列のすべての値が型である必要があります。VARCHARNULL

次に、次のようなもの:

SELECT CAST(COALESCE(GETDATE(), 'InsertRandomStringHere') AS VARCHAR) AS DATE
UNION
SELECT CAST(COALESCE(NULL, 'InsertRandomStringHere') AS VARCHAR)

動作するはずです。

ただし、ワイヤの反対側でアプリの列から値を読み取るのが難しくなる可能性がDateあります (アプリがある場合)。

于 2012-12-20T09:12:12.127 に答える
0
SELECT ISNULL(Date, 'InsertRandomStringHere') AS Date
FROM Table
于 2012-12-20T09:12:37.843 に答える