「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:3
昨日:0
総数:1861
現在:1


クエリでの文字の切り出し

ページOpenOffice.org FAQの登録ページ
投稿者urudakara
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-05-19 23:29:23 (水)
OSubuntu
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

こんにちは。 初心者でなにぶん分からない事ばかりなのでよろしくお願いします。 あるテーブルに9桁の数字の識別コードがあります。 クエリでその識別コードから奇数桁を選びだし選び出したもの足した合計を表示するフィールドが欲しいと思っています。

例 上位9桁が 012345678 の場合

0+2+4+6+8=20ですので20と計算されるフィールドをクエリに作りたいと思います。 mid関数がいいのかと思いmid(“識別コード”;1;1)としましたがエラーがでます。 どなたかおしえてくれませか?

またこのケースの場合テーブルを作るとき識別コードフィールドは数値型にするべきでしょうかそれとも文字列にするべきでしょうか?

基本的な事でもうしわけありませんがよろしくおねがいします。


まずBaseの関数について

M.Kamataki (2010-05-20 00:39:55 (木))

初心者の方とのことなので、まず頭をリフレッシュしましょう。基本的にはCalcと同じように考えてはいけません。

たとえばMID関数はCalcでは利用できますが、Baseでは利用できません。BaseにもCalcと同じ名前の関数もありますが、基本的には学び直すことになります。Baseにて標準で利用しているデータベースはHSQLDBといいます。このデータベースの関数は以下のページに紹介されています。

http://hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html

なお、HSQLDBは一応ANSI準拠なので、市販のSQLに関するポケットリファレンスなどを購入すると関数や演算子について、日本語の資料に当たることができます。

今回のケースでは

M.Kamataki (2010-05-20 00:51:45 (木))

一応、ひとつの回答例を書きます。他にも実現できる方法はあるかもしれません。先にも書いたようにMID関数はありません。文字列の任意の桁を取り出すSUBSTRING関数と文字列を型変換するCONVERT関数を利用します。

SUBSTRING関数は文字列が対象なので、識別コードフィールドのデータ型は文字列である必要があります。しかし、計算が必要なので、以下の例ではCONVERT関数で整数にしています。どのような型変換が可能かは、上記で紹介したHSQLDBの関数を紹介したページをご覧ください。

SELECT CONVERT ( SUBSTRING ( "識別コード", 1, 1 ) , INTEGER ) +
CONVERT ( SUBSTRING ( "識別コード", 3, 1 ) , INTEGER ) +
CONVERT ( SUBSTRING ( "識別コード", 5, 1 ) , INTEGER ) +
CONVERT ( SUBSTRING ( "識別コード", 7, 1 ) , INTEGER ) +
CONVERT ( SUBSTRING ( "識別コード", 9, 1 ) , INTEGER )
AS "識別コード奇数桁合計" FROM "テーブル名" ;

まず、このSQLコードのうち、テーブル名をお使いのデータベースに合わせて変更してください。

Baseのクエリーカテゴリーで、「SQL表示でクエリーを作成」をクリックして、表示されたダイアログの画面で上記のテーブル名を直したコードを貼り付けて、保存してください。どうでしょうか。お望みの動作になるでしょうか。

なお、ご質問の際は、作りかけでもかまいませんので、サンプルとしてBaseのファイルを添付してください。添削する方が、誤解のない回答ができますので。

出来ました

urudakara (2010-05-20 11:06:07 (木))

回答ありがとうございます。

例として出していただいたSQL文からクエリを作って見たところ、「まさにこうしたかった!!」という動作になりました。
SQLの事はもちろん存在は知ってましたが、はっきりいって中身は何も知らないも同然でした。

最初に上げていただいたリンクを見たのですが、いきなり英語だったのでとまどいましたが、HSQLDBとかを検索してみてこれから勉強してみようと思います。

また、例としてサンプルをつけた方が良かったんですね。
今後は作りかけの物を添付しようと思います。

私は実は酪農をしておりまして、作ろうとしているデータベースは自分の所の牛のデータベースです。
私は近くではありませんが、最近は口蹄疫の事で緊張の日々ですががんばります。

これからまた質問させて頂くこともあると思いますが、よろしくおねがいします。

今後、勉強して答える側に回れるくらいだとうれしいですね。ありがとうございました。

完了にします

M.Kamataki (2010-05-20 21:56:57 (木))

コメントありがとうございます。

お名前:
題名: