精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SAS:length,klength,substr,ksubstr,ksubstrb的區別

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

我們經常會看到Klength,Ksubstr,以及Kscan等一系列的函數,由此會產生疑惑,加K和不加K兩者之間有什么區別和聯系。當我們在做項目的時候發現有時候不加K也能實現我們想要得到的結果,但是有時候則會出現亂碼的情況,嘗試加上K后就可以完美規避掉亂碼這個問題,為什么會出現這樣的問題呢?本文告訴你答案。

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

一、klength和length

例1:計算test數據集中topic這個字符變量的長度

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;

結果如下:

圖片

可以看到,由于中文字符在utf-8編碼時為3個字節, 而length函數計算的是字節長度,會把一個漢字當成3個長度,數字當做1個長度,所以計算結果為2*3+7=13。而klength函數會忽略全角半角,統一把漢字和數字都當做1個長度,所以計算結果為9。

二、ksubstr和substr

例2:提取test數據集中topic中前六位的值

data all2;

set test;

   topic1=substr(topic,1,6);

   topic2=ksubstr(topic,1,6);

run;

結果如下:

圖片

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

三、substr和ksubstrb

例3:提取test數據集中topic中前5位的字符串

data all3;

set test;

   topic1=substr(topic,1,5);

   topic2=ksubstr(topic,1,5);

   topic3=ksubstrb(topic,1,5);

run;

結果如下:

圖片

可以看到,用substr提取出的字符串出現了亂碼,這是因為substr函數提取字符時是按字節來提取的,中文字符在utf-8編碼時為3個字節,所以提取指定長度的字符串時如果截斷了漢字,那么返回的結果顯示出來便會出現亂碼。此時用ksubstrb函數就可以避免出現亂碼的情況,它會舍棄最后一個不完整字符,從而保證不會出現顯示上的亂碼。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    566

    瀏覽量

    20384
  • SAS
    SAS
    +關注

    關注

    2

    文章

    517

    瀏覽量

    32770
  • UTF-8
    +關注

    關注

    0

    文章

    13

    瀏覽量

    7830
收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 云計算基礎入門:12-scsi及sas接口-sas和sata區別

    SATA云計算SCSISAS
    Mr_haohao
    發布于 :2022年10月16日 01:17:21

    SAS走進企業級存儲應用

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

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

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

    SAS分區規范為所有SAS物理結構提供靈活高效的接入控制,其特性包括

    接入控制分區以將共享網絡資源劃分為不同的工作組 安全策略以限制不同組之間的訪問 擴展器開關單點配置以及策略管理 后向兼容,并對現有SAS控制器、主機總線以及磁盤驅動器陣列的操作是透明的。PM8399
    發表于 06-02 09:31

    AD中signal length和routed length中有什么區別

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

    SAS固態硬盤存儲技術

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

    SAS硬盤有什么特點?

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

    Altium中Signal length和Routed length區別

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

    PCIExpress SATA和SAS設計驗證的簡化

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

    SAS接口的設計

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

    請問什么是SAS硬盤?具有哪些特點?

    請問什么是SAS硬盤?具有哪些特點?
    發表于 11-04 06:09

    SAS35X24R SAS EXPANDER 使用24端口擴展器提供靈活且經濟高效的SAS和SATA存儲解決方案

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

    SAS3X24R SAS EXPANDER 使用24端口擴展器實現經濟高效的SAS和SATA存儲解決方案

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

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

    電子發燒友網站提供《Power-Optimized Avago 12Gb/s SAS/SATA SAS35x48 SAS35x40 SAS35x36擴展器.pdf》資料免費下載
    發表于 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擴展器

    oracle中substr函數用法

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