将单个字符添加到字符串而不使用更新

时间:2016-11-17 14:00:40

标签: sql oracle ms-access replace

问题

我在数据库中有大约500个名称,以缩写名称结尾,例如

┌────────────┬───────────┐
│ FNAME      │ LNAME     │
├────────────┼───────────┤
│ Berthe M   │ Bjaaland  │
│ Markus M   │ Nilsen    │
│ Ole T      │ Rasmussen │
└────────────┴───────────┘

我想使用find和replace在所有单字符名称后添加句号(没有挪威语名称由单个字符组成,所以我知道它们都是缩写)。如果我可以运行更新查询,这将很容易,但我无权访问。有没有办法通过查找和替换或其他一些解决方法来执行此操作?

期望的结果

┌────────────┬───────────┐
│ FNAME      │ LNAME     │
├────────────┼───────────┤
│ Berthe M.  │ Bjaaland  │
│ Markus M.  │ Nilsen    │
│ Ole T.     │ Rasmussen │
└────────────┴───────────┘

进一步使用

一旦我开始工作,相同的方法将应用于更改所有名称中间的单个字母,即使用'*? *”。

───

注释

我正在向Oracle运行Access 2007。

查找名称的SQL:

select KOMMNR, KRETSNR, BOSTNR, PERSNR,
       FORNVN, ETTNVN
  from FOLKETELLINGER_KPERSON_1875
 where FORNVN like "* ?";

我发现我无法使用此语法来运行过滤器,因为它返回以字符结尾的任何内容,而不是以空格结尾的任何内容。这让我感到惊讶,因为我发现like查询中可以使用的许多虚拟字符在搜索/过滤器中也能很好地工作。

我假设我需要运行更新的SQL,看起来像这样:

update FOLKETELLINGER_KPERSON_1875
   set FOLKETELLINGER_KPERSON_1875.FORNVN = "* ?."
 where FOLKETELLINGER_KPERSON_1875.FORNVN Like "* ?";

我尝试复制此语法以执行单个查找和替换,但该字段改为“*?”,并不令人惊讶。

───

P上。 S。:我添加了sql-update标签,即使我特意做想要使用它;如果它应该删除,请在评论中告诉我。

P上。 P. S。:绘制一张ASCII表令人惊讶地平静下来;现在我真的想回去工作......

2 个答案:

答案 0 :(得分:4)

如果您不想更新数据,请编写SELECT查询以获得所需的结果。

IIf()区分案例:

SELECT FORNVN, [FORNVN] & IIf([FORNVN] Like "* ?",".","") AS FORNVN_Dot
FROM etc.

答案 1 :(得分:0)

您无法按模式设置。只添加一个“。”。

update FOLKETELLINGER_KPERSON_1875
set FOLKETELLINGER_KPERSON_1875.FORNVN = FOLKETELLINGER_KPERSON_1875.FORNVN & "."
where FOLKETELLINGER_KPERSON_1875.FORNVN Like "* ?";