sql server如何去除数据中的一些无用的空格

 更新时间:2023年05月29日 11:43:49   作者:wxl@  
这篇文章主要介绍了sql server去除数据中的一些无用的空格,本文给大家提到了一些常用的函数,结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

先有个一名为student的关系,其字段以及元组如图所示:

为了保持数据的一致性,现在需要将sname的多余空格去除,以及将所有的snative字段的“族”去掉以保持数据的一致性。
在这之前,首先介绍几个常用的函数:

left&right&substring

使用格式:
left(str, n)
right(str, n)
substring(str, start, n)
str指的是字符串对象,n指的是字符个数,所以left和right的作用就明了了:从传入的字符串的左边(右边)第一个字符开始,选中n个字符,例如:

这里选出的结果有的为空是因为原关系中sname有些开头有空格。
而substring()的用法更为灵活,它指定了从str的第几个元素开始,即start的作用,如从sname的第二个字符开始选择三个字符:

有三个地方需要注意:

  • 在sql中,字符串的第一个字符不是0,而是1,拿python来说,它的字符串的第一个字符的索引为0,拿C语言的数组来说,第一个元素的索引为0,所以这个区别需要清楚。
  • 我们知道中文占用两个字节,可能在这里容易陷入一个误区:是不是sql选择字符串中的中文需要两个距离大小呢?比如选择第一个中文就是:substring(str, 1, 2)?看了上面的实例就知道了,这里储存字符串类似于数组,一个字符占用一个位置,所以这样才是正确的:substring(str, 1, 1)
  • 如果要访问字符串的最后一个字符如何操作呢?根据这三个函数有两种方法:right(str, 1)或者substring(str, len(str), 1)

lower&upper

使用方式:

select upper(sname) from student;
select lower(sname) from student;

这两个函数对于中文无影响

ltrim&rtrim

使用方式:

select ltrim(sname) from student;
select rtrim(sname) from student;

作用:去除属性值最左边(右边)的空格;

模糊查询(like的用法)

具体请参照我的这一篇博文:https://www.jb51.net/database/285790x8b.htm

首先解决简单的,将民族的多余的“族”去掉:

update student set 
snative=substring(snative, 1, len(snative) - 1) 
where right(snative, 1)='族';

现在去除多余的空格:
大体上有两种方式,使用like和不适用like:

使用like :

首先去除左右两边的空格:
这里的% 可以代表任意字符,甚至可以为空。

-- 首先去除左右两边的空格
update  student set  
sname=ltrim(rtrim(sname)) where sname like ‘% %';

然后去除中间的空格:

update student set 
sname=left(sname,1)+right(sname,1) where sname like ‘% %';

使用like '% %'其实实现了扫描每一个sname字符串是否包含空格。

不使用like:

首先去除两边的空格:

update student set sname=ltrim(rtrim(sname));

去除中间的空格:

update student set 
sname = left(sname, 1) + 
rtrim(ltrim(substring(sname, 2, len(sname) - 2))) + 
right(sname, 1);

这种方法其实不通用,仅仅适合处理名字长度小于4的情况,其他情况的中间空格没法完全去除。它的思路就是先除去sname的左右空格,然后取中间部分,再次除去这部分的左右空格,然后和左右部分相接。

到此这篇关于sql server去除数据中的一些无用的空格的文章就介绍到这了,更多相关sql server去除数据空格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQLServer地址搜索性能优化

    SQLServer地址搜索性能优化

    网上关于SQL优化的教程很多,但是比较杂乱。今天我们来从一个简单的例子来探讨下SQLServer地址搜索性能优化
    2017-01-01
  • sql server排查死锁优化性能

    sql server排查死锁优化性能

    这篇文章介绍了sql server排查死锁优化性能的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • GreatSQL 在SQL中如何使用 HINT 语法修改会话变量

    GreatSQL 在SQL中如何使用 HINT 语法修改会话变量

    GreatSQL推出新的优化Hint功能,名为SET_VAR,允许用户在查询语句中修改数据库的会话变量,但只对当前查询会话生效,不影响其他会话,本文给大家介绍GreatSQL 在SQL中如何使用 HINT 语法修改会话变量,感兴趣的朋友一起看看吧
    2024-10-10
  • SQL Server查看当前连接数和最大连接数具体方法代码

    SQL Server查看当前连接数和最大连接数具体方法代码

    这篇文章主要介绍了SQL Server查看当前连接数和最大连接数的具体方法,讲解了使用系统视图、配置选项、实时监控和SQL Server Management Studio等方法,每种方法都给出了代码示例,需要的朋友可以参考下
    2025-04-04
  • sql server如何去除数据中的一些无用的空格

    sql server如何去除数据中的一些无用的空格

    这篇文章主要介绍了sql server去除数据中的一些无用的空格,本文给大家提到了一些常用的函数,结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • sqlserver 数据库学习笔记

    sqlserver 数据库学习笔记

    sqlserver 数据库学习笔记,学习sqlserver的朋友可以参考下。
    2011-11-11
  • SQLSERVER的非聚集索引结构深度理解

    SQLSERVER的非聚集索引结构深度理解

    非聚集索引也是堆结构?其实SQLSERVER有几种页面类型(数据都使用一页一页来存储,就像Windows的内存也是使用页面来组织的)感兴趣的朋友可以了解下,希望本文可以增加你们对非聚集索引结构的理解
    2013-01-01
  • SQL Server数据复制到的Access两步走

    SQL Server数据复制到的Access两步走

    以下的文章主要描述的是把SQL Server数据复制到的Access数据库中的实际操作步骤,以及对其在实际操作中要用到的代码描述。
    2015-09-09
  • SQLServer2019安装教程图文详解

    SQLServer2019安装教程图文详解

    这篇文章主要介绍了SQLServer2019安装教程图文详解,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 谈谈Tempdb对SQL Server性能优化有何影响

    谈谈Tempdb对SQL Server性能优化有何影响

    由于tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象,在数据库中起到举足轻重的作用,此篇文章给大家带来tempdb对sql server性能优化的影响,感兴趣的朋友参考下
    2015-11-11

最新评论