我想用sql中相应的值替换某些值。我无法创建交叉引用表。这些值可以在我的应用程序的“txt”或“properties”文件中指定
我看着 CASE
但我有200个替代品 CASE
这是不够的
SELECT dummy FROM TestTable;
如果我得到 LOT_NUMBER
我想把它换成 Lot Number
或者如果我得到 LOT_NUMBER_XREF
我想把它换成 Lot Number Cross-Reference
```
dummy
LOT_NUMBER
LOT_NUMBER_XREF
替换为
dummy
Lot Number
Lot Number Cross-Reference
3条答案
按热度按时间eaf3rand1#
如果有许多不同的值要替换,则应该创建一个表来存储旧值到新值的Map。然后可以在查询中联接该表。
下面的sql将旧值替换为新值(如果未定义转换,则保持原样):
对于要转换的有限数量的值,可以使用大小写。或者是有工会的cte:
6ovsh4lw2#
如果您不能使用交叉引用表,请使用(您必须在应用程序中生成)子查询或cte!cte:
或子查询:
cotxawn73#
如果你有像
_
那么你能做的就是LIKE
操作员和然后,使用
CASE WHEN
最重要的是DUMMY
IN(X,REF) Then REPLACE(DUMMY,'X',CROSS)
同样,对于其他人,这也将减少案件的数量。问题是只需检查泛化的术语和它们的替换项就可以存储它
IN
对最一般的条款进行预过滤。如果计数仍然很大,则需要一个临时表来查找引用,就像其他编程语言中的数组一样