Ⅰ select 怎麼截取空格前面的字元
sql語句可以截取指定欄位後面的字元串,以sqlserver為例,需要用到charindex函數和substring函數。
如test表中有如下數據,要求截圖str欄位中逗號後邊的內容。
可用如下語句:
select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;
結果截圖:
charindex函數說明:
語法:
CHARINDEX ( expression1 , expression2 , [ start_location ] )
參數:
expression1
一個表達式,其中包含要尋找的字元的次序。expression1 是一個短字元數據類型分類的表達式。
expression2
一個表達式,通常是一個用於搜索指定序列的列。expression2 屬於字元串數據類型分類。
start_location
在 expression2 中搜索 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜索。
substring函數說明:
語法:
substring( expression, start, length)
參數:
expression
字元串、二進制字元串、文本、圖像、列或包含列的表達式
start
整數或可以隱式轉換為 int 的表達式,指定子字元串的開始位置
length
整數或可以隱式轉換為 int 的表達式,指定子字元串的長度
Ⅱ sql如何將一條內容包含空格的記錄拆分成多條記錄
「張三,李四,王五,錢六,趙七,Tom,Amy,Joe,Leo」,現在要將此字元串按照「,」進行分離得到一組數據,現在可以得出這個函數傳入變數有兩個,一個是目標字元串,我們定義為@string,數據類型為nvarchar(500),選擇nvarchar()是為了兼顧所有Unicode字元集,比如中文;另一個變數為分隔符,我們定義為@separator,數據類型為nvarchar(10),輸出變數則定義為@array,一個單列列名為String,數據類型為nvarchar(500)的Table。
以字元串「張三,李四,王五,錢六,趙七,Tom,Amy,Joe,Leo」為例,首先得找到第一個「,」,然後把「張三」截取出來,然後將目標字元串變成「李四,王五,錢六,趙七,Tom,Amy,Joe,Leo」,然後再找第一個「,」,把「李四」截取出來,依次類推,直到找不到「,」,有了這個思路,下面就直接實現,查找字元串在程序語言中一般用indexOf方法,截取一般用Substring方法,SQL SERVER中有SUBSTRING函數用來截取字元串,但是沒有indexOf查找函數,取而代之的是CHARINDEX和PATINDEX函數,CHARINDEX用於完全匹配查找,而PATINDEX用於模糊匹配查找,根據我們的需求,選用CHARINDEX函數,整個SPLIT函數代碼如下:
CREATEFUNCTION[dbo].[SPLIT]
(
--
@stringnvarchar(500),
@separatornvarchar(10)
)
RETURNS@arrayTABLE(Stringnvarchar(500))
AS
BEGIN
--Declarethereturnvariablehere
DECLARE@separatorIndexint,@tempStringnvarchar(500),@tagStringnvarchar(500)
--AddtheT-
SET@tagString=@string
SET@separatorIndex=CHARINDEX(@separator,@tagString)
WHILE(@separatorIndex<>0)
BEGIN
SET@tempString=SUBSTRING(@tagString,1,@separatorIndex-1)
INSERTINTO@array(String)VALUES(@tempString)
SET@tagString=SUBSTRING(@tagString,@separatorIndex+1,LEN(@tagString)-@separatorIndex)
SET@separatorIndex=CHARINDEX(@separator,@tagString)
END
SET@tempString=@tagString
IF(LEN(@tempString)>0)
INSERTINTO@array(String)VALUES(@tagString)
--Returntheresultofthefunction
RETURN
END
GO
測試
SELECT*FROMdbo.SPLIT(N'張三,李四,王五,錢六,趙七,Tom,Amy,Joe,Leo',',')
Ⅲ SQL 怎麼去掉字元串中間的空格,卻保留最後的空格 例如:把+□1.123□□(□為空格) 變為 +1.123□□
我有個比較搓的辦法,如果結尾的空格數是固定的話,那麼可以先把所有的空格都去掉,然後在末尾加上兩個空格
去空格:
update table_XXXX set size = replace(size, ' ','');
Ⅳ sql語句 怎麼去掉一個欄位里值的空格 如name=『阿斯 』
思路大概是這樣:
實用ltrim或者rtrim函數去掉左邊或右邊符合條件的字元。
如果是oracle環境,看你這里都是字母在前數字在後的格式,假設舊列叫 col_old,新的字母列是col_str,新的數字列是col_num
update table1 set
col_str=rtrim(col_old,'1234567890'),
col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))
sql server 有沒有這個函數不知道了,反正這是一個思路吧。供參考而已
sql沒有這個東西,那我就給你提個思路吧,語句你自己寫了,我沒有環境。
用ASCII碼和sql的ltrim和rtrim來做,你需要循環找到從左起每個字元都是ASCII>=65(9以上即字母)的,直到找到ASCII<=64的就結束,這樣可以把這個字元部分的長度得到,在用trim函數截取一下就可以了。
Ⅳ sql 如何截取一個欄位里某一字元串中間的字元
--這個查詢需要注意的是qwer後的需要查詢的字元串必須是一個空格,不能有的是一個空格有的是兩個。也就是格式要固定。
--定義參數
create table #a (string varchar(max))
declare @sql varchar(max)
declare @a varchar(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--這個是要查詢的字元串
---------------------------查詢qwer後面的字元串----------------------------------------
while charindex('qwer',@a)<>0
begin
select @a=SUBSTRING ( @a,charindex('qwer',@a)+5,LEN(@a)-charindex('qwer',@a)-4)
insert into #a values (@a)
end
select SUBSTRING (LTRIM ( string) ,1,charindex(' ',LTRIM ( string))) as result from #a
--查詢結果
result
zxcv
yuchor
abcd
Ⅵ sql欄位空格截取
一般的資料庫系統都回有trim函數
如果沒有試試RTrim或者LTrim等函數
Ⅶ 用SQL怎麼把一列所有字元串中包含的空格都刪除呢
用REPLACE函數,把空格替換成
''。
例:去除
表table
中
col
列的空字元
去除空格符:update
table
set
col
=
REPLACE(col,'
','')
還有tab製表符(即char(9)),顯示效果類似空格。
去除製表符:update
table
set
col
=
REPLACE(col,CHAR(9),'')
Ⅷ sql 截取欄位中空格前的字元
用charindex和substring可以實現截取
順便說一句,如果你得空格不是固定的,你就得定義一個字元串為"a,b,c,d,e,f.........z"
根據空格個數,獲取列明,拼接語句.
Ⅸ 如何使用SQL截取空格字元串
mysql:select TRIM(欄位名) from 表名
Ⅹ MSSQL 如何去掉資料庫中字元串里的空格
MSSQL 如何去掉資料庫中字元串里的空格?
例如:姓名,表格中習慣兩個字的經常中間加入1-2個空格,
在MSSQL數據中用下面的語句,清除姓名中的空格:
UPDATE ERPUser SET truename = REPLACE(truename, ' ', '')
這個語句是替換一個空格為空。如果有的名字有幾個空格呢,就多執行幾遍,直到都替換完成。
去掉空格還有許多其他的語句,廣泛學習,利用好,就會產生事半功倍的效果。
例如:
SQL 中使用 ltrim()去除左邊空格 ,rtrim()去除右邊空格 ,沒有同時去除左右空格的函數,要去除所有空格可以用replace(字元串,' ',''),將字元串里的空格替換為空 。 例:去除空格函數。
declare @temp char(50)
set @temp = ' hello sql '
print ltrim(@temp) --去除左邊空格
print rtrim(@temp) --去除右邊空格
print replace(@temp,' ','') --去除字元串里所有空格
print @temp
>> 輸出結果
hello sql
hello sql
hellosql
hello sql
其他資料庫也有各自的語句:Oracle中TRIM(character_expression)等。
其他語句手機號碼的問題,和空格無關:
如何decimal 或float型轉化為varchar型:需要用到轉換
UPDATE ERPUser SET Serils = CONVERT(varchar(20), CONVERT(decimal(18, 0), mob))
如果不轉換,結果是科學計數法了。