0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SAS:length,klength,substr,ksubstr,ksubstrb的區(qū)別

冬至子 ? 來源:小高的SAS學(xué)習(xí)筆記 ? 作者:小高筆記 ? 2023-05-19 11:28 ? 次閱讀

我們經(jīng)常會(huì)看到Klength,Ksubstr,以及Kscan等一系列的函數(shù),由此會(huì)產(chǎn)生疑惑,加K和不加K兩者之間有什么區(qū)別和聯(lián)系。當(dāng)我們在做項(xiàng)目的時(shí)候發(fā)現(xiàn)有時(shí)候不加K也能實(shí)現(xiàn)我們想要得到的結(jié)果,但是有時(shí)候則會(huì)出現(xiàn)亂碼的情況,嘗試加上K后就可以完美規(guī)避掉亂碼這個(gè)問題,為什么會(huì)出現(xiàn)這樣的問題呢?本文告訴你答案。

原來加K是以字符為基礎(chǔ)進(jìn)行處理,也就是你數(shù)字符串中有幾個(gè)字符就是幾個(gè)字符,而不加K是以字節(jié)為基礎(chǔ)進(jìn)行處理。我們知道在SAS中文簡體中一個(gè)漢字(標(biāo)點(diǎn))占兩個(gè)字節(jié),一個(gè)數(shù)字占一個(gè)字節(jié);在SAS UTF-8中一個(gè)漢字(標(biāo)點(diǎn))占三個(gè)字節(jié),數(shù)字占一個(gè)字節(jié),但是SAS 英文版字符和數(shù)字都占一個(gè)字節(jié),所以在此環(huán)境下Klength和Length、Substr和Ksubstr的功能是一樣的,下面我舉三個(gè)例子,以UTF-8為例:

一、klength和length

例1:計(jì)算test數(shù)據(jù)集中topic這個(gè)字符變量的長度

data test;

input topic $20.;

   cards;

話題Topic 1

話題Topic 2

話題Topic 3

話題Topic 4

話題Topic 5

;

run;

data all1;

set test;

   topic1=klength(topic);

   topic2=length(topic);

run;

結(jié)果如下:

圖片

可以看到,由于中文字符在utf-8編碼時(shí)為3個(gè)字節(jié), 而length函數(shù)計(jì)算的是字節(jié)長度,會(huì)把一個(gè)漢字當(dāng)成3個(gè)長度,數(shù)字當(dāng)做1個(gè)長度,所以計(jì)算結(jié)果為2*3+7=13。而klength函數(shù)會(huì)忽略全角半角,統(tǒng)一把漢字和數(shù)字都當(dāng)做1個(gè)長度,所以計(jì)算結(jié)果為9。

二、ksubstr和substr

例2:提取test數(shù)據(jù)集中topic中前六位的值

data all2;

set test;

   topic1=substr(topic,1,6);

   topic2=ksubstr(topic,1,6);

run;

結(jié)果如下:

圖片

可以看到,substr提取出的字符串為“話題”, 而ksubstr提取出了前六個(gè)字符”話題Topi”,所以還是和上面的例子是一個(gè)道理,以K開頭的是以字符為基礎(chǔ)提取字符串,而不以K開頭的以字節(jié)為基礎(chǔ)提取,但是有時(shí)我們會(huì)遇到用substr提取出的字符串出現(xiàn)亂碼的情況,出現(xiàn)這種情況后要怎樣解決呢,看下面一個(gè)例子。

三、substr和ksubstrb

例3:提取test數(shù)據(jù)集中topic中前5位的字符串

data all3;

set test;

   topic1=substr(topic,1,5);

   topic2=ksubstr(topic,1,5);

   topic3=ksubstrb(topic,1,5);

run;

結(jié)果如下:

圖片

可以看到,用substr提取出的字符串出現(xiàn)了亂碼,這是因?yàn)閟ubstr函數(shù)提取字符時(shí)是按字節(jié)來提取的,中文字符在utf-8編碼時(shí)為3個(gè)字節(jié),所以提取指定長度的字符串時(shí)如果截?cái)嗔藵h字,那么返回的結(jié)果顯示出來便會(huì)出現(xiàn)亂碼。此時(shí)用ksubstrb函數(shù)就可以避免出現(xiàn)亂碼的情況,它會(huì)舍棄最后一個(gè)不完整字符,從而保證不會(huì)出現(xiàn)顯示上的亂碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    579

    瀏覽量

    20529
  • SAS
    SAS
    +關(guān)注

    關(guān)注

    2

    文章

    523

    瀏覽量

    32884
  • UTF-8
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    7861
收藏 人收藏

    評論

    相關(guān)推薦

    #硬聲創(chuàng)作季 云計(jì)算基礎(chǔ)入門:12-scsi及sas接口-sas和sata區(qū)別

    SATA云計(jì)算SCSISAS
    Mr_haohao
    發(fā)布于 :2022年10月16日 01:17:21

    SAS走進(jìn)企業(yè)級存儲應(yīng)用

    SAS走進(jìn)企業(yè)級存儲應(yīng)用串行SCSI(SAS)的出現(xiàn)已經(jīng)有幾年了。2005年,在主要的接口技術(shù)中,由于OEM服務(wù)器制造商和系統(tǒng)集成商開始提供串行SCSI解決方案,企業(yè)級存儲市場將會(huì)顯現(xiàn)革命性的進(jìn)展
    發(fā)表于 11-13 21:58

    串行連接SCSI(SAS)技術(shù)開辟寬數(shù)據(jù)路徑

      串行連接SCSI(SAS)技術(shù)開辟寬數(shù)據(jù)路徑直到不久前,數(shù)據(jù)中心主要安裝著使用光纖通道連接技術(shù)和并行SCSI接口的存儲區(qū)域網(wǎng)。這類存儲解決方案提供了高性能和可靠性,但費(fèi)用高昂
    發(fā)表于 11-13 21:59

    SAS分區(qū)規(guī)范為所有SAS物理結(jié)構(gòu)提供靈活高效的接入控制,其特性包括

    接入控制分區(qū)以將共享網(wǎng)絡(luò)資源劃分為不同的工作組 安全策略以限制不同組之間的訪問 擴(kuò)展器開關(guān)單點(diǎn)配置以及策略管理 后向兼容,并對現(xiàn)有SAS控制器、主機(jī)總線以及磁盤驅(qū)動(dòng)器陣列的操作是透明的。PM8399
    發(fā)表于 06-02 09:31

    AD中signal length和routed length中有什么區(qū)別

    求解AD中signal length和routed length中有什么區(qū)別,感覺routed length是 代表走線長度的意思,那么signal
    發(fā)表于 05-18 14:55

    SAS固態(tài)硬盤存儲技術(shù)

    SAS固態(tài)硬盤存儲技術(shù)是一種介于傳統(tǒng)硬盤和內(nèi)存之間的存儲技術(shù),在IOPS上,相比普通機(jī)械硬盤的存儲速度快50到1000倍,能在一毫秒以內(nèi)的時(shí)間里對任何位置的存儲單元完成快速輸入/輸出操作。 隨著
    發(fā)表于 06-18 05:00

    SAS硬盤有什么特點(diǎn)?

    SCSI協(xié)議由于其深受信賴的可靠性和穩(wěn)定的功能集,20年來一直牢牢占據(jù)市場。3年前才推出的串行連接SCSI(SAS)延續(xù)了對SCSI的創(chuàng)新,具有全新水平的可擴(kuò)展性、靈活性和經(jīng)濟(jì)有效性,為用戶提供接入、數(shù)據(jù)傳輸和數(shù)據(jù)存儲能力。
    發(fā)表于 09-24 09:01

    Altium中Signal length和Routed length區(qū)別

    在使用Altium Designer畫PCB時(shí),等長布線后,使用快捷鍵R+L檢測布線長度時(shí),發(fā)現(xiàn)布的線長不一致,在PCB的nets里查看長度時(shí)看到了Signal length和Routed length;如下圖所示:(圖文詳解見附件)
    發(fā)表于 10-18 11:16

    PCIExpress SATA和SAS設(shè)計(jì)驗(yàn)證的簡化

    Simplify the validation of your PCI Express?, SATA and SAS designs with the first full-capability protocol viewer built into a digital oscilloscope
    發(fā)表于 11-05 14:07

    SAS接口的設(shè)計(jì)

     SAS是新一代的SCSI技術(shù),和現(xiàn)在流行的Serial ATA(SATA)硬盤相同,都是采用串行技術(shù)以獲得更高的傳輸速度,并通過縮短連結(jié)線改善內(nèi)部空間等。SAS是并行SCSI接口之后開發(fā)出的全新
    發(fā)表于 09-09 06:26

    請問什么是SAS硬盤?具有哪些特點(diǎn)?

    請問什么是SAS硬盤?具有哪些特點(diǎn)?
    發(fā)表于 11-04 06:09

    SAS35X24R SAS EXPANDER 使用24端口擴(kuò)展器提供靈活且經(jīng)濟(jì)高效的SAS和SATA存儲解決方案

    電子發(fā)燒友網(wǎng)為你提供Broadcom(ti)SAS35X24R SAS EXPANDER相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有SAS35X24R SAS EXPANDER的引腳圖、接線圖、封裝手
    發(fā)表于 07-04 13:18
    <b class='flag-5'>SAS</b>35X24R <b class='flag-5'>SAS</b> EXPANDER 使用24端口擴(kuò)展器提供靈活且經(jīng)濟(jì)高效的<b class='flag-5'>SAS</b>和SATA存儲解決方案

    SAS3X24R SAS EXPANDER 使用24端口擴(kuò)展器實(shí)現(xiàn)經(jīng)濟(jì)高效的SAS和SATA存儲解決方案

    電子發(fā)燒友網(wǎng)為你提供Broadcom(ti)SAS3X24R SAS EXPANDER相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有SAS3X24R SAS EXPANDER的引腳圖、接線圖、封裝手冊、
    發(fā)表于 07-04 12:51
    <b class='flag-5'>SAS</b>3X24R <b class='flag-5'>SAS</b> EXPANDER 使用24端口擴(kuò)展器實(shí)現(xiàn)經(jīng)濟(jì)高效的<b class='flag-5'>SAS</b>和SATA存儲解決方案

    Power-Optimized Avago 12Gb/s SAS/SATA SAS35x48 SAS35x40 SAS35x36擴(kuò)展器

    電子發(fā)燒友網(wǎng)站提供《Power-Optimized Avago 12Gb/s SAS/SATA SAS35x48 SAS35x40 SAS35x36擴(kuò)展器.pdf》資料免費(fèi)下載
    發(fā)表于 08-14 09:41 ?0次下載
    Power-Optimized Avago 12Gb/s <b class='flag-5'>SAS</b>/SATA <b class='flag-5'>SAS</b>35x48 <b class='flag-5'>SAS</b>35x40 <b class='flag-5'>SAS</b>35x36擴(kuò)展器

    oracle中substr函數(shù)用法

    在Oracle數(shù)據(jù)庫中,SUBSTR函數(shù)用于從字符串中提取子字符串。它的語法如下: SUBSTR(string, start_position, [length]) 其中,string是要從中提取子
    的頭像 發(fā)表于 12-05 16:57 ?1335次閱讀