如何使用 MySQL 将 Select 查询值更改为文本?

How to Change Select Query Value to Text using MySQL?

看看下面的查询。如何将第 'Action' 列显示为文本。 如果 'Action' 的结果是 LEQ 0 然后显示文本 "Crash" 如果 'Action' GRT 0 是否显示文本 "Hold"?

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

使用CASE WHEN ... ELSE ... END和select来自你的集合(查询):

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

重构上面的答案,因为我认为没有必要向别名添加查询 table。我认为这应该有效,顺便说一下,另一个答案也应该有效,但是由于没有给定的原因,它的查询有点复杂。

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

此应用程序与我的第一个问题类似,我认为它可能会对以后的其他人有所帮助。 用户可以从 Table 的下拉列表中 select 一组选项将值输入数据库。

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

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

连同相同的 Power Table 的扩展函数 onCellEdited 脚本。 此脚本将 selection 作为值输入数据库。

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