sql server如何去除数据中的一些无用的空格
作者:wxl@ 发布时间:2024-01-18 02:22:22
先有个一名为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的左右空格,然后取中间部分,再次除去这部分的左右空格,然后和左右部分相接。
来源:https://blog.csdn.net/weixin_43141320/article/details/105363095


猜你喜欢
- 用numpy做矩阵运算时,少不了用到矩阵乘法。本文帮你迅速区分multiply, matmul和dot的区别。numpy官方文档中的说明:(
- 因为要牵扯到小计,所以需要计算两次。想法:1、把查询到的结果,插入到临时表,2、把统计结果插入到临时表。3、查询临时表记录放置到游标中。4、
- 如下表:先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序语法:select str_to_date(c
- Windows操作系统支持Python的Python2版本和Python3版本,下载安装时要根据windows的操作系统来选择对应的Pyth
- 开发目标:实现小红帽所挂脚本的自动生成下图为生成的最终目标本项目是从json中读取角色场景等信息,因此为了更好地判断所用属性是否需要,设置为
- 可迭代对象和迭代器迭代(iterate)意味着重复,就像 for 循环迭代序列和字典那样,但实际上也可使用 for 循环迭代其他对象:实现了
- 前言:存储引擎是数据库的核心,对于 MySQL 来说,存储引擎是以插件的形式运行的。虽然 MySQL 支持种类繁多的存储引擎,但最常用的当属
- 前言其实就是个小问题,但是爆出来的时候也很莫名其妙。因为之前都跑得好好的,只是换了不同的文件去跑才出的问题,关键是不同的文件要处理的内容和格
- 根据一些CSS写作经验,如何提高渲染效率及所占用消耗的资源,我们来浅谈一下CSS的渲染效率,书写高效的CSS。1、十六进制的颜色值对位数与大
- 使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码。随机密码也就是一
- 每个JavaScript函数都有prototype属性(javascript对象没有这个属性),这个属性引用了一个对象,这个对象就是原型对象
- 如何在安装setuptools模块时不生成egg压缩包而是源码 Q:如何在安装setuptools模块时
- 前言上篇文章 一文掌握 Go 文件的读取操作 介绍了如何使用 Go os 包和 bufio 包里的几个函数和方法,通过案例展示如
- 目录一、数据库瓶颈二、分库分表2、水平分表3、垂直分库4、垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题1、非partition
- 第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load
- 因工作需要,要将存放在sql server数据库中的数据全部导入到mysql数据库中,在网上搜集相关资料,找到两种方法,现在分别谈谈对他们的
- 1、半开放socket利用shutdown()函数使socket双向数据传输变为单向数据传输。shutdown()需要一个单独的参数,该参数
- 如下所示:import numpy as npimport pandas as pd################# 准备数据 #####
- python提供了4种方式来满足进程间的数据通信1. 使用multiprocessing.Queue可以在进程间通信,但不能在Pool池创建
- 首先要兼容IE\FF滴然后有一个环境与条件:必须是使用em单位布局。因为这个是利用字号做缩放效果,并且兼容fontSize各项单位,例如px