sqlservertrim
A. sqlserver字元串截取問題
declare @number int ,@str_Seconde nvarchar(200)
select @number= patindex('%,%','額啊啊大,才-斯蒂芬,諤,諤') -- 找出第一次出現的位置
select @str_Seconde= right('額啊啊大,才-斯蒂芬,諤,諤',len('額啊啊大,才-斯蒂芬,諤,諤')-@number)
--獲得結果 "才-斯蒂芬,諤,諤"
select @number= patindex('%,%',@str_Seconde)
select left(@str_Seconde,@number-1)
B. 從SQLServer裡面取出數據,去掉頭尾的空格
利用trim()函數就可以了啊。
trim分三種:ltrim、rtrim、trim。
ltrim是去除數據左邊的空白;
rtrim是去除數據右邊的空白;
trim是去除數據前後的空白。
例如:trim(" 你好 ")
輸出結果是"你好";
ltrim(" 你好 ")
輸出結果是" 你好";
rtrim(" 你好 ")
輸出結果是"你好 "。
C. 如果用sqlserver該怎麼實現按指定的格式實現流水號
SQL Server 2012 版本, 新增了 序列號的功能。
可是實現類似的處理。
如果是 SQL Server 2008 或者以下版本的, 可以使用 identity + 計算列的處理機制。
oracle:
select 'P'||trim(to_char(patient_new_id.nextval,'009999999')) patient_id from al
'P' 是 固定字元串.
|| 是 連接字元串
trim 是去除 字元串前後的空格
to_char 是把數字類型的, 轉換為 字元類型
patient_new_id.nextval 這里的 patient_new_id 應該是一個序列號, nextval 是獲取序列號的下一個值。
'009999999' 是 TO_CHAR 函數的 格式化字元串, 0 意味這如果數字不到這一位,那麼也要顯示0。
patient_id 是前面那個 'P' || ...... 查詢結果的 別名。
from al 是因為 Oracle 不允許你像 sql server 那樣 select 1 這樣的處理。 必須要 from 一個表, 因此只好 from 一個 只有1行數據的系統表。
D. Sqlserver如何格式化字元串的
這個沒有格式化的方法,但是可以用這種方式:(char(39) +身份證號欄位) as 身份證號 或 ('''' +身份證號欄位) as 身份證號
E. UPDATE ACCOUNT SET NAME = trim(NAME)||'D'SQLServer:UPDATE ACCOUNT SET NAME = trim(NAME)+'D'
說明了oracle和sqlserver兩個語法的不同。
都是update語句,字元串聯接 oracle 使用 || sqlserver 使用 +
F. 在sql server里是否有trim這個詞
SQLserver比較簡單易用,很能體現微軟力求簡便的傳統思維,而且佔用資源少,比較適合普通用途oracle是個企業級的資料庫系統,實現網格技術等,可以最大化的實現網路應用和企業級的系統安全架構
G. 為什麼從sqlserver里讀出的字元串末尾含空格
varchar類型:當值沒有達到設定的寬度,自動在後面加上空格,以達到設定的寬度
你可以把varchar類型改為nvarchar類型
nvarchar類型:值是什麼就是什麼,不會自動添加空格
H. 怎麼讓SQLServer自動截取過長字元串
以下是幫您查找的資料,因為條件的關系,並沒有給您測試,見諒。
看SQLSERVER關於SET ANSI_WARNINGS的描述,
字元串的截斷應該是與該項設置有關。
請您在兩台機器(xp,win2003)上分別運行一下下面的代碼,比較返回的結果是否相同:
select databaseproperty(N'資料庫名稱',N'IsAnsiWarningsEnabled')
結果含義:
0-表示OFF
1-表示ON
I. sqlserver 怎麼分割字元串
如樓上給的 單獨分割一部分 也可用下面的函數 分割出一個集合
--1.0拆分字元串參數@strSource要操作的字元串@strSeparator分隔符
CREATEFUNCTION[dbo].fn_splitStr(@strSourceNVARCHAR(4000),@strSeparatorNVARCHAR(10))
RETURNS@tbResultTABLE(idINTIDENTITY(1,1),rsNVARCHAR(1000))
AS
BEGIN
DECLARE@dwIndexINT,@strResultNVARCHAR(1000),@dwSeparatorLenINT=LEN(@strSeparator);
SET@dwIndex=CHARINDEX(@strSeparator,@strSource);--取得第一個分隔符的位置
WHILE@dwIndex>0
BEGIN
SET@strResult=LEFT(@strSource,@dwIndex-1);
INSERT@tbResultVALUES(@strResult);
--將要操作的字元串去除已切分部分
SET@strSource=SUBSTRING(@strSource,@dwIndex+LEN(@dwIndex),LEN(@strSource));
SET@dwIndex=CHARINDEX(@strSeparator,@strSource);--循環量增加
END
--處理最後一節
IFLEN(@strSource)>0INSERT@tbResultVALUES(@strSource)
RETURN;
END
GO
J. 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 的表達式,指定子字元串的長度