1. 程式人生 > >sql中去掉欄位的空格或多餘字元

sql中去掉欄位的空格或多餘字元

情景:

有一個表資料,插入的資料欄位中含有空格,以至於陣列分組時出分支,原始資料如下

mydb=# select row_number() over(partition by begincity order by pubtime desc),* from bills;               
 row_number | id |             goodsdesc              | beginunit  |   begincity   |       pubtime       | amount  
------------+----+------------------------------------+------------+---------------+---------------------+---------
          1 |  2 |  建 築 設 備                       |  福 建 省  |  三 明 市     | 2015-10-05 07:21:22 |  165.29
          1 |  9 |  旋 挖 附 件 39 噸                 |  河 南 省  |  三 門 峽 市  | 2015-10-05 11:38:38 | 3739.03
          2 |  7 |  旋 挖 附 件 38 噸                 |  河 南 省  |  三 門 峽 市  | 2015-10-05 10:48:38 | 6313.45
          3 |  8 |  旋 挖 附 件 35 噸                 |  河 南 省  |  三 門 峽 市  | 2015-10-05 10:48:38 | 6850.54
          4 |  6 |  鮮 香 菇 2000 斤                  |  河 南 省  |  三 門 峽 市  | 2015-10-05 10:38:29 | 7806.61
          5 |  5 | 5 0 鏟 車 , 後 八 輪 翻 鬥 車     |  河 南 省  |  三 門 峽 市  | 2015-10-05 07:53:13 | 9407.32
          1 | 11 |  普 貨 40 噸 需 13 米 半 掛 一 輛  |  上 海 市  |  上 海 市     | 2015-10-05 08:13:59 | 3564.18
          1 |  1 | 衣服                               | 海南省     | 三亞市        | 2015-10-05 09:32:01 | 1621.47
          1 |  4 | 普貨                               | 福建省     | 三明市        | 2015-10-05 15:19:17 | 5409.37
          2 |  3 | 裝置                               | 福建省     | 三明市        | 2015-10-05 11:21:54 |  114.85
          1 | 10 | 裝置                               | 上海市     | 上海市        | 2015-10-05 07:59:35 | 5147.07
(11 rows)

從資料上看,福建省三明市本來是同一個的,但是由於空格關係被識別為兩組。

解決:

string 為要處理的欄位,可用到的函式有:

字元前的空格,用ltrim(string) 

字元後的空格,用rtrim(string) 

字元中的空格,用replace(string, ' ', ' ')

mydb=# update bills set goodsdesc=replace(goodsdesc,' ',''),beginunit=replace(beginunit,' ',''),begincity=replace(begincity,' ','');
UPDATE 11

結果:

mydb=# select row_number() over(partition by begincity order by pubtime desc),* from bills; //以begincity進行分組,按pubtime降序排序
 row_number | id |       goodsdesc        | beginunit | begincity |       pubtime       | amount  
------------+----+------------------------+-----------+-----------+---------------------+---------
          1 |  1 | 衣服                   | 海南省    | 三亞市    | 2015-10-05 09:32:01 | 1621.47
          1 |  4 | 普貨                   | 福建省    | 三明市    | 2015-10-05 15:19:17 | 5409.37
          2 |  3 | 裝置                   | 福建省    | 三明市    | 2015-10-05 11:21:54 |  114.85
          3 |  2 | 建築裝置               | 福建省    | 三明市    | 2015-10-05 07:21:22 |  165.29
          1 |  9 | 旋挖附件39噸           | 河南省    | 三門峽市  | 2015-10-05 11:38:38 | 3739.03
          2 |  7 | 旋挖附件38噸           | 河南省    | 三門峽市  | 2015-10-05 10:48:38 | 6313.45
          3 |  8 | 旋挖附件35噸           | 河南省    | 三門峽市  | 2015-10-05 10:48:38 | 6850.54
          4 |  6 | 鮮香菇2000斤           | 河南省    | 三門峽市  | 2015-10-05 10:38:29 | 7806.61
          5 |  5 | 50剷車,後八輪翻斗車   | 河南省    | 三門峽市  | 2015-10-05 07:53:13 | 9407.32
          1 | 11 | 普貨40噸需13米半掛一輛 | 上海市    | 上海市    | 2015-10-05 08:13:59 | 3564.18
          2 | 10 | 裝置                   | 上海市    | 上海市    | 2015-10-05 07:59:35 | 5147.07
(11 rows)

相關推薦

sql去掉空格多餘字元

情景: 有一個表資料,插入的資料欄位中含有空格,以至於陣列分組時出分支,原始資料如下 mydb=# select row_number() over(partition by begincity order by pubtime desc),* from bills;  

sql去掉的所有空格

字元前的空格,用ltrim(string)  字元後的空格,用rtrim(string)  字元中的空格,用replace(string, ' ', ' ') 例 update qx_users set `NAME`=rtrim(NAME) update qx_u

批量修改sql某個的特定資訊

1.update 表名 set 欄位名=REPLACE(欄位名,'原內容','新內容') 此種寫法,會更新表中的所有資料的指定欄位,即使不含原內容,也會更新 例:將admin表中user中的所有123變為aaa update admin set user=REPLACE

Postgre SQL Json新增資料

select json欄位名::jsonb || ‘新增欄位JSon格式’::jsonb from 表名; 例: select invoice_base_info::jsonb || '{"info"

mysql遠端可以登陸本地登陸不了(user表host的萬用字元%)

在MySQL資料庫中,使用select user();檢視當前登陸使用者。 mysql中host欄位的%與localhost不是誰包括誰的問題,是由精確到模糊進行匹配的。 說明 當用戶從客戶端請求登陸時,MySQL將授權表中的條目與客戶端所提供的條目進

(ORACLE)sql判斷一個是否全數字 含有中文及統計某個中文的個數

一、判斷一個欄位是否全數字 或含有中文update (select length(t.name), t.* -- name,length(name) from g_enterprise_info t where nvl2(tran

elasticsearch2.xes-sql的distinct和原生的cardinality使用及適用場景

場景:         使用者通過資料集dataset分組,並通過event_no欄位去重進行資料去重後統計。 使用es-sql實現等價去重查詢: SELECT dataset,count(DISTINCT

mysql去掉字元中間空格 mysql去掉字元中間空格

mysql去掉欄位字元中間空格 問題 :   資料庫中某一列資料欄位中有空格 ,mysql有什麼辦法批量去掉某個欄位字元中的空格?不僅是字串前後的空格,還包含字串中間的空格,   解決:   答案是 replace,使用mysql自帶的 replace 函式   (1)my

mysql查詢為null或者不為null的sql語句怎麼寫?

在mysql中,查詢某欄位為空時,切記不可用 = null,而是 is null,不為空則是 is not null select * from table where column is null; select * from table where column is not null; se

SQL Server 系統檢視sysobjectstype的說明

物件型別:   AF = 聚合函式 (CLR)   C = CHECK 約束   D = DEFAULT(約束或獨立)   F = FOREIGN KEY 約束   FN = SQL 標量函式  

oracle使用sql查詢時為空則賦值預設

oracle 通過 nvl( )函式sql 查詢時為 空值 賦預設值 oracle 函式介紹之nvl   函式宣告:nvl(col,val)   說明:當col為空時取val作為返回值,當col不為空時取col值。   用處:最主要的是格式化資料,比如計算金額時,不想出現

關於sed命令去除文本當每個前後空格及tab效率低下的解決辦法

最近使用到sed命令進行文字處理,因從資料庫中獲取到的欄位當中有個別字段中間包含空格,而最終儲存時候要保證每個欄位資料的完整性,所以預設的文字分割方式不能使用。 首先使用read讀取一行資料line_data,再根據分隔符'"'進行拆分,拆分結果儲存到split_data中,因資料的列數可以確定

sql server替換的某個字元

USE [Vocabulary ] GO --UPDATE [dbo].[table name] --   SET [en] = '' --      ,[cn] ='' -- WHERE --char(9) 水平製表符 --char(10)換行鍵 --c

Sql使用SUM和UNION ALL 查詢兩張表指定的和

1、t_test1表           t_test2表       2、查詢需求:求t_test1.num與t_test2.amount之和   方法一: SELECT

sql查詢表某個值相同,其他取最大值的記錄

SELECT a.* FROM user a WHERE not EXISTS( select 1 from user where name = a.name and age > a.age ) 對user表進行掃描,編號(或姓名)相同情況下,沒有比前邊年齡大

SQL——Sql_Server如何判斷表是否存在

--比如說要判斷表A中的欄位C是否存在兩個方法: 一, IF EXISTS ( SELECT 1 FROM SYSOBJECTS T1 INNER JOIN SYSCOLUMNS

SQL Server : 表是否存在;表是否存在;儲存過程是否存在;索引是否存在;

table_name --表名field_name --欄位名一、表是否存在:--如果不存在表,那麼建立IF OBJECT_ID('table_name') IS NULL BEGIN      CREATE TABLE table_name([field_name] [UN

sql server 統計資料庫某個的值,剔除重複資料和查詢重複的資料

1.有的時候,在資料庫中存在一些重複的資料,但是我們又想統計某個欄位的值,重複的要剔除掉,如圖所示: 在上面的圖我們可以看到,id=2,3 id=4,5的4條資料都重複了,我們統計amount只要其

SQL語句在表新增(列)

ALTER TABLE — 更改表屬性 語法 ALTER TABLE table [ * ]       ADD [ COLUMN ] column type ALTER TABLE table [ * ]       ALTER [ COLUMN ] column { SET DEFAULT value

sql查詢同一表格,不同,但是兩個的值相同的記錄行

比如有表格go_shoplist,欄位為id,qishu,maxqishu 查詢的記錄為.qishu與maxqishu相同的行. select * from `go_shoplist` where