4

我想在 SQL Server 2008 R2 中编写一个 SQL 查询,当它为 NULL 时将日期转换为字符串。例如...

    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') 

演示

转换和转换 (Transact-SQL)

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

(尽管正如其他人指出的那样,对于某些 DBMS,您可能需要进行额外的类型转换操作)。

于 2012-12-20T09:08:08.180 回答
1

试试这个 。这是wto mysql

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 回答