項目に入っているデータを20文字で区切って保存したいと考えています。
★テーブル名 TEST
★項目名 KOUMOKU1 , KOUMOKU2 , KOUMOKU3
例えば
KOUMOKU1にデータが入っていて
このデータをSQL処理
20文字以内の場合はそのままKOUMOKU2に文字が入ります。
しかし
20文字を超える場合
最初の20文字を KOUMOKU2 に入れて 残りの文字を KOUMOKU3
に入れます。
上記のようなSQL命令を行いたいのですが実行可能でしょうか?
お手数をおかけしますがよろしくお願いいたします。
※データベースはPhpMyAdminを使用しています。
CASE 式は覚えておいて損の無いものなので、
横から出ても良いものかと、躊躇しましたが、
今件の場合は、もっともっとシンプルに出来ますので、横槍失礼します。
UPDATE TEST SET KOUMOKU2 = LEFT(KOUMOKU1, 20), KOUMOKU3 = SUBSTR(KOUMOKU1, 21)
文字列を扱う関数はいろいろあって、下記に載ってますので、
ざぁっとで結構ですから、眺めてみてください。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.2 文字列関数
(そちらの現在のMySQLのバージョンが分からなくなってしまったので、
少し古めのページにリンクしてあります。)
とりあえずphpMyAdminってデータベースはないですよって突っ込みは別にしておいて
case / length / substring関数を使用すれば可能です
他にもやり方がありますしとりあえず書いてみただけですが一応
select
KOUMOKU1,
case
when length(KOUMOKU1) <= 20 then KOUMOKU1
else substring(KOUMOKU1,1,20)
end KOUMOKU2,
case
when length(KOUMOKU1) > 20 then substring(KOUMOKU1,21)
end KOUMOKU3
from
TEST
実行はしてませんのであしからず
phpMyAdmin はデータベースではないとは どういうことでしょうか?
IT業界でいうデータベースとは何を指すのでしょうか?
データを構築出来るものを自分はデータベースだと思っていたので、phpmyadmin はデータベースだと思っていました。
これよりもすごいデータベースがあるのでしょうか?
データそのもの。
時にはシステム全体(【1】+【2】)を差す場合もある。
【2】DBMS : DataBase Management System
データベースを管理するためのシステム。MySQL はその一種。
他に有名なものとしては ORACLE、SQLServer、PostgreSQLなどがあり、
パソコン用としては MicrosoftAccess などがある。
「データベースのバージョンは何?」などと聞かれたりした場合は、
「データベースマネージメントシステムはどれの、どのバージョン?」
というのを略しているので「MySQL 5.1 だよ」といった具合に答えます。
( 5.1というのは適当に書いているだけなので、今後のため、
select version();
でバージョン表示するなどして、レンタルサーバ/ご自宅環境両方ともに
再確認しておいてください。)
【3】ユーザーインターフェース
phpMyAdmin は MySQL をブラウザから操作するためのもの。
これを使っているという事からDBMSがMySQLであるという事までは判る。
ただし、MySQLのバージョンまでは推理しようがない。
phpで作るアプリケーションもこれに属する。
【4】SQL
データベースに問い合わせたり、操作したりするための言語。
基本的構造はDBMSが違っても同じだけど MySQL ver4 と 5 でも、
使える関数に違いがあったりするので、質問の際にはDBMS名と
とバージョンを書くことが必須だったりします。
phpMyAdmin はデータベースを差すものではないという件は、
私自身も、過去に書いたような気がしていたので、
何度も書かないほうがいいかなって・・・っで、最近はスルーしてきたのですが、
それがアダとなったようで、スミマセン。
ご回答ありがとうございます。
データベースというものが何かというのが理解できました。
phpmyadmin は ユーザーインターフェースというものなのですね。
select version(); を教えていただいたおかげですぐにバージョンを把握することが出来ました。
とても勉強になりました。
ありがとうございます。