SQL - 查找值之间有 2 个或更多空格的行

问题描述 投票:0回答:3

我有包含名字和姓氏的 SQL 表。姓氏在自己的栏中。问题在于有两个姓氏的用户,因为有时他们在姓氏之间添加多个空格,然后我必须手动查找并修复它们。

如何找到这些中间有多个空格的姓氏?

sql
3个回答
6
投票

如果您想查找有多个空格的记录,那么您可以使用以下技巧:

SELECT surname
FROM yourTable
WHERE LENGTH(REPLACE(surname, ' ', '')) < LENGTH(surname) - 1

此查询将检测

surname
列中的两个或多个空格。如果您也想做一个
UPDATE
这是可能的,但这将是相当特定于数据库的,并且在我写这个答案时您没有指定您的数据库。


2
投票

首先删除那些多余的空格。然后添加一个约束以确保它不会再次发生:

alter table tablename add constraint surname_verify check (surname not like '%  %')

(或者,更好的是,有一个触发器确保姓氏的间距、大小写等正确。)

如何删除多余的空格?取决于 dbms。

你也许可以这样做:

update tablename set surname = replace(surname, '  ', ' ')
where surname like '%  %'

不需要

where
子句,但会使交易变得更小。

(迭代以删除三个或更多空格。)或使用 regexp_replace。


0
投票

更整洁:

select string = replace(replace(replace(' select   single       spaces',' ','<>'),'><',''),'<>',' ')

输出:

选择单个空格

© www.soinside.com 2019 - 2024. All rights reserved.