sql如何在不使用sql的情况下对列中的任何sql查询数据进行字符串替换

zf2sa74q  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(447)

我有一个表格,上面有一列不同的水果名称-苹果,橘子,香蕉等。这些水果名称可以有重复。
现在,如果我做一个sql选择,我得到的名称是它的原样。我想更改数据,以便每个“苹果”都被替换为“甜苹果”,每个“橘子”都被替换为“普通话”。
我知道我可以用 replace 我的sql查询中的函数。但是,我不想/不能修改我的sql查询。我试图把更改sql作为最后的手段,因为这需要在几个不同的nodejs脚本上完成。
我想知道数据库本身是否有某种方法可以让它自动返回这些修改过的数据。有点像一个过滤器/管道/约束(我不知道该怎么称呼它),它设置在一个表的特定列上,并使它自动对从这个表中查询的任何数据执行这个替换函数。
我想回答主要是postgres和mysql,如果可能的话,对sqlserver也一样。

ef1yzkbh

ef1yzkbh1#

它有它的缺点,但你可以这样做:
将fruit列的名称更改为其他名称,然后创建一个新的计算列来替换新重命名的fruit列,并将旧列的名称赋给这个新列,这样所有现有查询都将命中新列。
缺点是任何现有的insert/update查询都必须更改为insert/update到旧列的新名称。

holgip5t

holgip5t2#

嗯,数据库的概念是“存储值”。因此,如果您要查询这些值,您只有很少的修改选项。
您对处理的期望显然取决于您的编程语言。无论何时输出从数据库检索到的值,都要对其进行 Package 、过滤-返回所需的值,而不是存储的值,即:

public static string filter(value){
  if (value == "Apple")
     return "Sweet Apple";
  if (value == "Orange")
     return "Mandarine";

  return value;
}
i7uq4tfw

i7uq4tfw3#

不,最接近的是insert和update上的触发器,用于在数据进入时替换数据,但如果不在查询中指定它,则不能覆盖正在查询的数据。您可以创建一个视图来显示替换的字符串。

相关问题