- ベストアンサー
SQLにあるデータをWEB画面に出力するときに、フィールドの値を編集して表示させたい
SQLにあるデータをWEB画面に出力するときに、 フィールドの値を編集して出力したいと考えています。 具体的には、フィールドの値が5~10桁の数字で、 WEB画面には下3桁目に「-]を入れたいと考えています。 例(1)SQLの番号フィールドの値:123456 WEB表示:1234-56 例(2)SQLの番号フィールドの値:12345 WEB表示:123-45 どうぞ宜しくお願い致します。 ****************************************************** 作成したPHP 番号フィールドの値を編集して表示したい ****************************************************** <?php $cont = mssql_connect("サーバ名","ユーザ名","パスワード"); mssql_select_db('[DB名]', $cont); $sql = "select 氏名, 住所, 番号 from テーブル名 $rc = mssql_query($sql,$cont); while ($array = mssql_fetch_array($rc)) { print("<table><tr><td>"); print "".$array["番号"].""; print("</td><td>"); print "".$array["住所"].""; print("</td><td>"); print "".$array["氏名"].""; print("</td></td></table>"); } mssql_close($cont); ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
番号がVARCHAR系のデータならこんな感じで SELECT `氏名`, `住所`,CONCAT(LEFT(`番号`,CHAR_LENGTH(`番号`)-2),"-",RIGHT(`番号`,2)) AS `番号` FROM `テーブル名` INT系のデータだとちょっと面倒そうなので省略
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
あ・・・SQLserverでしたね。 しつこいようですが、SQLの種類は毎回明示方がよいとおもいます。 私はMySQLがベースなので・・・ SQLserverでは文字列結合は「+」でつなぐみたいですね・・・ 文字の長さはLEN関数のようです。
お礼
回答ありがとうございます。 修正できました。 (1)文字列の長さを求めて、(LEN) (2)文字列の左部分を取り出して、(LEFT) (3)文字列の右部分を取り出して、(RIGHT) (4)文字列を結合する (+) ↑のようにひとつづつ考えて、 組み合わせればいいのですね。 大変勉強になりました。 ありがとうございました。
- ranuwe
- ベストアンサー率33% (7/21)
$val = "123456"; // 方法1 echo preg_replace("/^(.+)(..)$/","$1-$2",$val); // 方法2 echo substr($val,0,strlen($val)-2) . "-" . substr($val,strlen($val)-2,2);
お礼
回答ありがとうございます。 知識不足のため、あまり理解できなかったので、 今回は、ANo.2様の回答を参考にさせていただきました。 ありがとうございました。
お礼
番号のデータ型はNCHARです。 回答ありがとうございます。 修正したら以下のようなエラーメッセージがでました。 Warning: mssql_query() [function.mssql-query]: message: 行 1: '0' の近くに無効な構文があります。 (severity 15) in C:\Program Files\…0821.php on line 100 この場合どうしたらいいのでしょうか。 よろしければご教授ください。