• ベストアンサー

MS SQLServer のSQLで文字列の前にN:

MS SQLServer のSQLで文字列の前にN: をつけることをよく見かけますが、 「N:」とはいったいどんな意味なのでしょうか? 教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • X-Terra
  • ベストアンサー率48% (25/52)
回答No.1

T-SQLでの話かと思いますが・・・。NCHAR/NVARCHAR型という、型(タイプ)があるのですが、これらは、夫々、national character/national character varying(SQL-92での表記法)の意味を持っています。夫々、固定長文字列(Unicode)/可変長文字列(Unicode)です。 NVARCHARはSQL-Server2000では4000文字まで、VARCHAR2は8000文字まで格納可です。(つまり、1/2になるということです) さて、N'***' とT-SQL内で書くと、''内の文字をUnicodeで表現されたものとして処理する、という意味になります。Nは、nationalの略です。ですから、日本語を使おうとするとNは必須になる、という事ですね。 こんな感じでつかいます。#N'Unicode 文字列'

kokoko
質問者

お礼

適切な回答ありがとうございました。

関連するQ&A

  • PL/SQLとMS SQLServerの違いを教えてください

    SQLを学ぼうとしているのですが。。。 概要で煮詰まってしまいました;; SQLはRDBMSにおいてのデータベース言語で、直接データベースに宣言を実行でき、PL/SQLはOracle社が開発した、手続き型に組み込めるSQLで、 MS SQLServerは。。。? Oracle SQLは。。。? と、調べれは調べるほどに、訳が分からなくなってきました; PL/SQLとMS SQLServerの違いはなんなのでしょうか? Oracle SQLとSQLは別物と考えてよいのでしょうか? 使用できるOSが違うのか、組み込める言語が特定されているのか、具体的な違いが判らず、どのような条件下で使用したらよいのかわかりません。 お手数ですがご解答よろしくお願いいたします。

  • 文字列をsplitするSQL文を教えて下さい

    SQLServer2000上で指定した文字で文字列をsplitような関数があれば教えて頂けますか? 例えば"12345.6789"という文字列を"."(ピリオド)を指定して、"12345"と"6789"という2つの文字列を取得したいと思っています。 Transact-SQLの関数リファレンスを見てみたのですが、適当なものが見つかりませんでした。 自作するしかないのでしょうか・・

  • SQLServerで文字列の末尾からある位置で取出

    SQLServer2012で selectで文字列の末尾から(右から)ある文字の位置までを取り出したいのですが どのようなSQLにすればよいのでしょうか。 やりたいことは、 例えば、文字列「abc 123 xyz」があるとします。 末尾から(右から)見て、最初に見つかった半角スペースから後ろ「xyzを取り出し たいです。 RIGHT を使えば取り出すことはできるのですが、取り出したい文字列の長さが同じ でないので使うことができません。 お願いします。

  • sqlで文字列を最後に追加したい

    SqlServer2000でクライアントはクエリアナライザを使っています。 例えばAccessのVBAでは adoRS!備考 = adoRS!備考.value & "追加する文字列" とすれば備考フィールドの最後に文字列を追加できますが、 これをsqlで行う場合にはどうればいいですか? update tblアンケート set 備考 = 備考 & '追加する文字列' としても「データ型の演算子が無効です。データ型演算子は boolean AND、データ型は varchar です。」エラーになってしまいます。 エラーの意味もわからず検索もしたのですが解決できませんでした。 宜しくお願い致します。

  • SQL:複数行のデータを一つの文字列にまとめたい

    複数行のデータを一つの文字列にまとめる方法を教えてください。 ※環境SQLServer2005 例: ID DATA AA XXX BB YYY AA ZZZ 次のようなテーブルがあるとき、IDがAAであるものを一つの文字列 "XXXZZZ" にまとめたデータにSQLで加工したいです。

  • SQLServerで文字列の末尾からある位置で取出

    SQLServerで文字列の末尾からある位置で取出 SQLServer2012で selectで文字列の末尾から(右から)ある文字の位置までを取り出したいのですが どのようなSQLにすればよいのでしょうか。 やりたいことは、 データとしては 部署名△チーム名△UP△0000001 部署名△チーム名△DW△0000002 部署名△チーム名△w00001 部署名△チーム名△000003 : : 部署名△チーム名△UP△100001 部署名△チーム名△DW△100002 ※△=半角スペース の様なデータから獲たいデータは、 UP△000001 DW△000002 w00001 000003 ; UP△100001 DW△100002 を取り出したいのです お願いします。

  • Unicodeの文字列がMs-Accessでは文字化け

    MS-Excelで読めるUnicodeの文字列がMs-Accessでは 文字化けします。 どうすれば直るでしょうか?

  • SQLServer2005で文字列の時刻の合計を出す方法はありますか?

    SQLServer2005で以下のテーブルがあります。 [Day] [Time]   1  1:30   1  2:00   2  4:45   3  2:30   3  1:45 Dayフィールド、Timeフィールドは共にvarchar2です。 (Timeには"1:30"の文字列が入っています) このテーブルを読み込むとき、各日ごとの合計を計算して出力するSQL文がわかりません。 ■■ 出力イメージ ■■ Day Time   1 3:30   2 4:45   3 4:15 DateAdd関数やMAX関数等を使って考えましたが実現できませんでした。 こういう処理をSQL文でおこなうことは可能でしょうか? もし実現可能な場合、方法やだいたいのやり方でも結構ですのでご教示いただけませんでしょうか? TimeフィールドがDatetime型から可能でしょうか? それとも、プロシージャや読み込んでから別途計算しなおさないと無理でしょうか? よろしくお願いします。

  • SQLserverでの列の削除について

    SQLserver2000にてSQL文の練習をしている、データベースの初心者です。 SQLserverでは、直接列の削除ができないと聞きました。 ---------------------------------------- ALTER TABLE テーブル名 DROP 列名 ---------------------------------------- ↑このようにはできませんでした。 そこで、いったん削除したい列以外の列がある別のテーブルをつくってからテーブル名を変更する方法として、 1,新しいテーブルを、元のテーブルからデータをコピーして作る。 2,元のテーブルを削除 3,新しいテーブルの名前を元の名前に変更。 という手段を使えばよいという情報を得ましたが、1の部分がどうしてもできません。 (テーブル削除、テーブル名の変更はできました) ---------------------------------------- CREATE TABLE 新しいテーブル名 AS SELECT 削除した列以外の列名 FROM 元のテーブル名 ---------------------------------------- このようにすると、 ---------------------------------------- サーバー : メッセージ 156、レベル 15、状態 1、行 2 キーワード 'AS' 付近に正しくない構文があります。 ---------------------------------------- といわれてしまいます。 EnterpriseManagerを使わずにやる方法が知りたいです。 正しいSQL文をどうかご教授ください。 どうぞよろしくお願いいたします。 ※ちなみにOSはWIN2000を使っています。

  • SQLserver2000にSQL*LODERのような

    SQLserver2000にオラクルのSQL*LODERのような 機能は存在しないでしょうか? もし、存在するならば方法を教えて頂けると非常に 助かります。 宜しくお願い致します。