我想在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。非常感谢您给予我的任何帮助。
答案 0 :(得分:7)
假设SQL-Server:
SELECT ISNULL(CONVERT(nVarChar(30), Date, 121), 'InsertRandomStringHere')
答案 1 :(得分:4)
COALESCE(datefield, 'InsertRandomStringHere')
(尽管其他人指出,对于某些DBMS,您可能需要执行其他类型转换操作)。
答案 2 :(得分:1)
试试这个。这是w.r.to mysql
select if(Date <> '',Date,'xxxxxxx'),ShipmentRef,RecieptNo from table
答案 3 :(得分:1)
这取决于你想要达到的目的。
列中的每个值必须是相同的类型(至少在MS-SQL中),因此如果您想要“随机字符串”,Date
列中的所有值都必须是VARCHAR
类型如果是NULL
日期。
然后像:
SELECT CAST(COALESCE(GETDATE(), 'InsertRandomStringHere') AS VARCHAR) AS DATE
UNION
SELECT CAST(COALESCE(NULL, 'InsertRandomStringHere') AS VARCHAR)
应该有用。
但是,如果您的应用中的Date
列中的值(如果有应用)在线路的另一端很难读取。
答案 4 :(得分:0)
SELECT ISNULL(Date, 'InsertRandomStringHere') AS Date
FROM Table