sql - 按照固定模式将表格值转换为文本
问题描述
我们使用软件来存储金融元素的组合。这些元素在某些组合中是允许的。这些组合的例外是前端中的类似 SQL 的语句,并在数据库表中保存为数值,如下例所示:
+------+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 | Col5 |
+------+------+------+------+------+
| 1 | 2 | 4 | 5 | 1 |
+------+------+------+------+------+
| -1 | 2 | 6 | 4 | 5 |
+------+------+------+------+------+
| 1 | 2 | 5 | 7 | 1 |
+------+------+------+------+------+
我想将这些数值转换回 SQL 语句,如下例所示:
+------+-----------+------+-----------+------+-----------+------+-----------+------+-----------+
| Col1 | Col1Trans | Col2 | Col2Trans | Col3 | Col3Trans | Col4 | Col4Trans | Col5 | Col5Trans |
+------+-----------+------+-----------+------+-----------+------+-----------+------+-----------+
| 1 | ( | 2 | SELECT | 4 | CODE | 5 | LIKE | 1 | * |
+------+-----------+------+-----------+------+-----------+------+-----------+------+-----------+
| -1 | | 2 | SELECT | 6 | NUMBER | 4 | = | 5 | AND |
+------+-----------+------+-----------+------+-----------+------+-----------+------+-----------+
| 1 | ( | 2 | SELECT | 5 | TOOL | 7 | <> | 1 | * |
+------+-----------+------+-----------+------+-----------+------+-----------+------+-----------+
每列的数值都不同,所以我只能想象使用很多案例......当我怀疑我怀疑的陈述是否有效时。我不想创建表来保存翻译值。有没有办法用数组做到这一点?
是否有任何代码示例可以轻松地遍历表/列并翻译其内容?
解决方案
您可以使用下面的代码并根据要求添加更多案例语句。
SELECT Col1
,CASE
WHEN Col1 = 1 THEN '('
ELSE '' END AS Col1Trans
,Col2
,CASE
WHEN Col2 = 2 THEN 'SELECT'
END AS Col2Trans
,Col3
,CASE
WHEN Col3 = 4 THEN 'CODE'
WHEN Col3 = 6 THEN 'NUMBER'
WHEN Col3 = 5 THEN 'TOOL'
END AS Col3Trans
,Col4
,CASE
WHEN Col4 = 5 THEN 'LIKE'
WHEN Col4 = 4 THEN '='
WHEN Col4 = 7 THEN '<>'
END AS Col4Trans
,Col5
,CASE
WHEN Col5 = 1 THEN '*'
WHEN Col5 = 5 THEN 'AND'
END AS Col5Trans
推荐阅读
- outlook - Outlook Interop AdvancedSearch 调用因筛选器而失败
- python - 尝试更新现有订阅时无效的 trial_end
- c - 如何在C中获取未知长度的字符串?
- php - 简单的地图类不会像部署时那样失败
- java - 有没有办法比较管道之间的 JCas 数据?
- excel - 如何将文本从一个单元格复制到同一列的所有空单元格中?
- google-apps-script - 如何使用 Google Apps 脚本在 Google 文档中的段落前设置一定数量的空格或缩进
- google-sheets - 需要一个简单的单行来根据该行是否包含“文本”来突出显示整行(不区分大小写)
- r - For-Loop 中的 For-Loop 似乎跳过了迭代 (r)
- java - 由于某种原因,循环不会打印出正确的数组值