dポイントプレゼントキャンペーン実施中!

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);
?>

A 回答 (3件)

番号がVARCHAR系のデータならこんな感じで



SELECT `氏名`, `住所`,CONCAT(LEFT(`番号`,CHAR_LENGTH(`番号`)-2),"-",RIGHT(`番号`,2)) AS `番号` FROM `テーブル名`

INT系のデータだとちょっと面倒そうなので省略
    • good
    • 0
この回答へのお礼

番号のデータ型はNCHARです。
回答ありがとうございます。
修正したら以下のようなエラーメッセージがでました。

Warning: mssql_query() [function.mssql-query]: message: 行 1: '0' の近くに無効な構文があります。 (severity 15) in C:\Program Files\…0821.php on line 100

この場合どうしたらいいのでしょうか。
よろしければご教授ください。

お礼日時:2007/08/21 18:31

あ・・・SQLserverでしたね。


しつこいようですが、SQLの種類は毎回明示方がよいとおもいます。
私はMySQLがベースなので・・・

SQLserverでは文字列結合は「+」でつなぐみたいですね・・・
文字の長さはLEN関数のようです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
修正できました。

(1)文字列の長さを求めて、(LEN)
(2)文字列の左部分を取り出して、(LEFT)
(3)文字列の右部分を取り出して、(RIGHT)
(4)文字列を結合する (+)

↑のようにひとつづつ考えて、
組み合わせればいいのですね。
大変勉強になりました。
ありがとうございました。

お礼日時:2007/08/22 10:46

$val = "123456";



// 方法1
echo preg_replace("/^(.+)(..)$/","$1-$2",$val);

// 方法2
echo substr($val,0,strlen($val)-2) . "-" . substr($val,strlen($val)-2,2);
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
知識不足のため、あまり理解できなかったので、
今回は、ANo.2様の回答を参考にさせていただきました。
ありがとうございました。

お礼日時:2007/08/22 10:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!