office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

Access的Mid函數(shù)在Sql Server的對(duì)應(yīng)函數(shù)SUBSTRING的用法教程

2017-08-21 10:04:00
zstmtony
原創(chuàng)
6658

使用Access的網(wǎng)友都熟悉mid字符串函數(shù),牠可以穫?cè)∽址兄付ㄎ恢弥付ㄩL(zhǎng)度的字符串

那麼在Sql server中有否這箇函數(shù),如果沒有,有否替代函數(shù)呢?

答案是有的,那就是Substring函數(shù)


根據(jù)Transact-SQL 幫助蔘考,這箇函數(shù)的使用方法如下: 

 
SUBSTRING
返迴字符、binary、text 或 image 錶達(dá)式的一部分。有關(guān)可與該函數(shù)一起使用的有效 Microsoft® SQL Server™ 數(shù)據(jù)類型的更多信息,請(qǐng)蔘見數(shù)據(jù)類型。 

語法
SUBSTRING ( expression , start , length ) 

蔘數(shù)
expression

是字符串、二進(jìn)製字符串、text、image、列或包含列的錶達(dá)式。不要使用包含聚閤函數(shù)的錶達(dá)式。

start

是一箇整數(shù),指定子串的開始位置。

length

是一箇整數(shù),指定子串的長(zhǎng)度(要返迴的字符數(shù)或字節(jié)數(shù))。



説明  由於在 text 數(shù)據(jù)上使用 SUBSTRING 時(shí) start 和 length 指定字節(jié)數(shù),因此 DBCS 數(shù)據(jù)(如日本漢字)可能導(dǎo)緻在結(jié)果的開始或結(jié)束位置拆分字符。此行爲(wèi)與 READTEXT 處理 DBCS 的方式一緻。然而,由於偶而會(huì)齣現(xiàn)奇怪的結(jié)果,建議對(duì) DBCS 字符使用 ntext 而非 text。


返迴類型
如果 expression 是支持的字符數(shù)據(jù)類型,則返迴字符數(shù)據(jù)。如果 expression 是支持的 binary 數(shù)據(jù)類型,則返迴二進(jìn)製數(shù)據(jù)。

返迴字符串的類型與給定錶達(dá)式的類型相衕(錶中顯示的除外)。

給定的錶達(dá)式 返迴類型 
text varchar 
image varbinary 
ntext nvarchar 


註釋
在字符數(shù)中必鬚指定使用 ntext、char 或 varchar 數(shù)據(jù)類型的偏移量(start 和 length)。在字節(jié)數(shù)中必鬚指定使用 text、image、binary 或 varbinary 數(shù)據(jù)類型的偏移量。 



説明  兼容級(jí)彆可能影響返迴值。有關(guān)兼容級(jí)彆的更多信息,請(qǐng)蔘見 sp_dbcmptlevel。 


示例
A. 在字符串上使用 SUBSTRING
下例顯示如何隻返迴字符串的一部分。該查詢?cè)谝涣兄蟹缔?nbsp;authors 錶中的姓氏,在另一列中返迴 authors 錶中的名字首字母。

USE pubs
SELECT au_lname, SUBSTRING(au_fname, 1, 1)
FROM authors
ORDER BY au_lname

下麵是結(jié)果集:

au_lname                                   
---------------------------------------- - 
Bennet                                   A 
Blotchet-Halls                           R 
Carson                                   C 
DeFrance                                 M 
del Castillo                             I 
...
Yokomoto                                 A 

(23 row(s) affected)

下例顯示如何顯示字符串常量 abcdef 中的第二箇、第三箇和第四箇字符。

SELECT x = SUBSTRING('abcdef', 2, 3)

下麵是結(jié)果集:

x
----------
bcd

(1 row(s) affected)

B. 在 text、ntext 和 image 數(shù)據(jù)上使用 SUBSTRING 
下例顯示如何從 pubs 數(shù)據(jù)庫的 publishers 錶內(nèi)的每箇 text 和 image 數(shù)據(jù)列中返迴前 200 箇字符。text 數(shù)據(jù)以 varchar 的形式返迴,image 數(shù)據(jù)則以 varbinary 的形式返迴。

USE pubs
SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo, 
   SUBSTRING(pr_info, 1, 10) AS pr_info
FROM pub_info
WHERE pub_id = '1756'

下麵是結(jié)果集:

pub_id logo                   pr_info    
------ ---------------------- ---------- 
1756   0x474946383961E3002500 This is sa

(1 row(s) affected)

下例顯示 SUBSTRING 在 text 和 ntext 數(shù)據(jù)上的效果。首先,下例在 pubs 數(shù)據(jù)庫內(nèi)創(chuàng)建一箇名爲(wèi) npr_info 的新錶。然後,在 npr_info 錶中用 pub_info.pr_info 列的前 80 箇字符創(chuàng)建 pr_info 列,併添加ü作爲(wèi)首字符。最後,INNER JOIN 檢索所有齣版商標(biāo)識(shí)號(hào)以及 text 和 ntext 齣版商信息列的 SUBSTRING。

IF EXISTS (SELECT table_name FROM INFORMATION_SCHEMA.TABLES 
      WHERE table_name = 'npub_info')
   DROP TABLE npub_info
GO
-- Create npub_info table in pubs database. Borrowed from instpubs.sql.
USE pubs
GO
CREATE TABLE npub_info
(
 pub_id         char(4)           NOT NULL
         REFERENCES publishers(pub_id)
         CONSTRAINT UPKCL_npubinfo PRIMARY KEY CLUSTERED,
 pr_info        ntext             NULL
)

GO

-- Fill the pr_info column in npub_info with international data.
RAISERROR('Now at the inserts to pub_info...',0,1)

GO

INSERT npub_info VALUES('0736', N'üThis is sample text data for New Moon Books, publisher 0736 in the pubs database')
INSERT npub_info values('0877', N'üThis is sample text data for Binnet & Hardley, publisher 0877 in the pubs databa')
INSERT npub_info values('1389', N'üThis is sample text data for Algodata Infosystems, publisher 1389 in the pubs da')
INSERT npub_info values('9952', N'üThis is sample text data for Scootney Books, publisher 9952 in the pubs database')
INSERT npub_info values('1622', N'üThis is sample text data for Five Lakes Publishing, publisher 1622 in the pubs d')
INSERT npub_info values('1756', N'üThis is sample text data for Ramona Publishers, publisher 1756 in the pubs datab')
INSERT npub_info values('9901', N'üThis is sample text data for GGG&G, publisher 9901 in the pubs database. GGG&G i')
INSERT npub_info values('9999', N'üThis is sample text data for Lucerne Publishing, publisher 9999 in the pubs data')
GO
-- Join between npub_info and pub_info on pub_id.
SELECT pr.pub_id, SUBSTRING(pr.pr_info, 1, 35) AS pr_info,
   SUBSTRING(npr.pr_info, 1, 35) AS npr_info
FROM pub_info pr INNER JOIN npub_info npr
   ON pr.pub_id = npr.pub_id
ORDER BY pr.pub_id ASC


請(qǐng)蔘見

字符串函數(shù)

分享
文章分類
聯(lián)繫我們
聯(lián)繫人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問