今回はSUBSTR関数について解説します。
/* 正常形 */
data data1;
id1="123456789";
output;
run;
data data2; set data1;
id2 = substr(id1, 1, 5);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/fbf84b7e6f8d5a908cc9dcf2966b9044.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/6952b2a208dbb515f40bce11734a7cd9.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
/* あいうえおかきくけこ */
data data1;
id1="あいうえおかきくけこ";
output;
run;
data data2; set data1;
id2 = substr(id1, 1, 5);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/61979991698dd550bcc6f753d1b5706c.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/7e77da14f76157ff31752a980d1807ad.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- 日本語だと表示がおかしくなる。
/* 0, 5 */
data data1;
id1="123456789";
output;
run;
data data2; set data1;
id2 = substr(id1, 0, 5);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/0-5_1.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/0-5_2.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- 第2引数に0を設定すると正しく処理されない。
/* 12, 17 */
data data1;
id1="123456789";
output;
run;
data data2; set data1;
id2 = substr(id1, 12, 17);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/12-17_1.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/12-17_2.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- 第2引数に最大文字数より大きな値を入れると、id2は欠損値になる。
/* 1, 12 */
data data1;
id1="123456789";
output;
run;
data data2; set data1;
id2 = substr(id1, 1, 12);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/1-12_1.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/1-12_2.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- 第3引数が最大文字数より大きくても正しく処理される。
/* 123456789 */
data data1;
id1=123456789;
output;
run;
data data2; set data1;
id2 = substr(id1, 1, 5);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/123456789_1.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/123456789_2.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- id1が数値型だと正しく処理されない。
/* "1", "5" */
data data1;
id1="123456789";
output;
run;
data data2; set data1;
id2 = substr(id1, "1", "5");
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/1-5_1.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/1-5_2.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- 第2引数、第3引数が文字型でも正しく表示される。
/* 1.1, 5 */
data data1;
id1="123456789";
output;
run;
data data2; set data1;
id2 = substr(id1, 1.1, 5);
run;
![](https://how-to-business.com/wp-content/uploads/2022/04/1.1-5_1.png)
![](https://how-to-business.com/wp-content/uploads/2022/04/1.1-5_2.png)
- substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
- 開始位置は1スタート。
- 第2引数が1.1でも処理は通る。(1~5を取る。)