【问题标题】:How to Change Select Query Value to Text using MySQL?如何使用 MySQL 将选择查询值更改为文本?
【发布时间】:2018-08-08 17:24:44
【问题描述】:

看看下面的查询。如何将“操作”列显示为文本。 如果“Action”的结果是 LEQ 0,则显示文本“Crash”,如果“Action” GRT 0 是否显示文本“Hold”?

SELECT col1 AS Action
FROM vdk
WHERE t_stamp Between "{StartTime}" AND "{EndTime}"

【问题讨论】:

    标签: mysql ignition


    【解决方案1】:

    重构上面的答案,因为我认为没有必要将查询添加到别名表。我认为这应该可以工作,另一个答案也应该可以工作,但它的查询有点复杂,没有给定的原因。

    SELECT (CASE WHEN col1 <= 0 THEN 'Crash' ELSE 'Hold' END) AS Action
    FROM vdk
    WHERE t_stamp Between "{StartTime}" AND "{EndTime}"
    

    【讨论】:

    • 他想在CASE WHEN ... 语句中使用Action(别名)。
    • 我认为这两个都是有效的答案,因为没有对别名 Action 进行计算/处理
    • 是的,这是我最初的回答,但这个问题很老,OP 最近用他所追求的“更简单”的版本对其进行了编辑。您可以在编辑中看到它。
    • 哦,我现在明白了!无论如何,对于新问题,两者都是正确的!
    • 在一个类似的应用程序中,我们使用 Ignition 的 Power Table 组件和它的扩展功能 - configureEditor 允许用户从表格下拉列表中选择“NULL”、“Hold”或“Crash”并拥有它进入数据库。请参阅此配置的以下答案。
    【解决方案2】:

    使用CASE WHEN ... ELSE ... END 并选择您的集合(查询):

    SELECT *, (CASE WHEN Action <= 0 THEN 'Crash' ELSE 'Hold' END) as ActionText
    FROM (
        SELECT col1 AS Action
        FROM vdk
        WHERE t_stamp Between "{StartTime}" AND "{EndTime}"
    ) q
    

    【讨论】:

    • 谢谢你,伊万卡。
    【解决方案3】:

    这个应用程序类似于我的第一个问题,我认为它可能会帮助其他人。 用户可以从表格的下拉列表中选择一组选项来将值输入到数据库中。

    使用 Ignition 的 Power Table 组件的扩展功能 configureEditor 和以下脚本。 此脚本设置下拉列表。

    if colName == 'Action':
       return {options': [(0, 'Null'), (1, 'HOLD'), (2, 'CRASH')]}
    

    连同同一个 Power Table 的扩展函数 onCellEdited 脚本。 此脚本将选择作为值输入到数据库中。

    #onCellEdited Upadte Query
    row = rowIndex
    col = colIndex
    colName = colName
    value = newValue
    
    ndx = self.data.getValueAt(row,0)
    query = "UPDATE vdk SET %s = ? WHERE ndx = ?" % colName
    system.db.runPrepUpdate(query,[value,ndx],'history')
    system.db.refresh(self.data)
    

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2018-11-08
      • 1970-01-01
      • 2019-10-10
      相关资源
      最近更新 更多