【问题标题】:Convert data type to text for case statement将数据类型转换为 case 语句的文本
【发布时间】:2019-10-02 03:09:47
【问题描述】:

我需要将数据类型转换为以下语句的文本。有人可以帮忙吗...

CASE WHEN [OrderID] IS NULL THEN 'N'
     WHEN [Order_ID] = '' THEN 'N'
     ELSE [Order_ID] END AS [Order_ID]

【问题讨论】:

    标签: sql sql-server tsql case


    【解决方案1】:

    尝试在CASE 表达式的ELSE 分支中将订单ID 转换为varchar

    CASE WHEN COALESCE([Order_ID], '') = ''
         THEN 'N'
         ELSE CAST([Order_ID] AS VARCHAR(MAX)) END AS [Order_ID]
    

    【讨论】:

    • , case when coalesce([Order_ID] is null) then 'N' when coalesce([Order_ID] = '') then 'N' else cast([Order_ID] as text end as [Order_ID]
    • something 是什么?
    • 你能看看这有什么问题吗: , COALESCE([Order_ID] 为 null) 时的情况,然后 COALESCE([Order_ID] = '') 时的 'N',然后 'N' 否则 CAST([ Order_ID] AS TEXT) 以 [Order_ID] 结尾
    • COALESCE :按顺序计算参数并返回最初不计算为 NULL 的第一个表达式的当前值。例如,SELECT COALESCE(NULL, NULL, 'third_value', 'fourth_value');返回第三个值,因为第三个值是第一个不为空的值。
    【解决方案2】:

    考虑isnull()

    CASE WHEN isnull([OrderID], '') = '' THEN 'N'   
         ELSE cast([Order_ID] as varchar(300)) END AS [Order_ID]
    

    【讨论】:

    • 非常感谢您尝试帮助我,但我仍然收到错误(高亮“Then”),: ,case when isnull([OrderID], '') = THEN 'N' else cast ([OrderID] as varchar(300)) END AS [OrderID]
    • 这应该是isnull([OrderID], '') = '' THEN
    • 很高兴您找到了有用的答案。请考虑通过单击左侧的灰色复选标记来接受答案。它奖励回答的人一些声望点,你也得到一些
    【解决方案3】:

    你也可以试试下面的:

    CASE WHEN OrderID IS NULL THEN 'N'
              WHEN OrderID  ='' THEN 'N'
              ELSE convert(varchar(20),OrderID ) END 
    

    【讨论】:

      【解决方案4】:

      试试这个替代方法-

      IIF(ISNULL([OrderID],'')='','N',CAST([OrderID] AS NVARCHAR(MAX))) AS [OrderID]
      

      【讨论】:

      • 我的数据流是:Excel模板(数据类型:数字)加载表(列f数据类型:Nvarchar(10)表(特定列格式化为数据类型:Nvarchar(10)模板数据字段仅包含“Y”或“N”,但错误地这个字段已格式化为“数字”,现在我们将无法对模板进行任何更改。我担心的是用户是否输入了任何数字或任何其他字符,SQL 表不应该接受所以这就是我想将数据类型转换为“文本”的原因。在你的答案中,它转换为 varchar(10),你能告诉我是否应该将它转换为“文本”字段还是“Varchar(10)”?
      • TEXT 好:如果你需要在你的数据库中存储大文本;如果你不搜索列的值;如果你很少选择这个列并且不加入它。 VARCHAR 很好:如果您存储小字符串;如果您搜索字符串值;如果您总是选择它或在连接中使用它。
      • Nvarchar 存储 UNICODE 数据。如果您需要存储 UNICODE 或多语言数据,nvarchar 是您的选择。 Varchar 存储 ASCII 数据,应该是您正常使用的数据类型。所以改为 NVARCHAR(MAX) 而不是 VARCHAR(100)
      猜你喜欢
      • 2019-01-07
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多