文字列の連結でのOracleとMySQL

SQLは、算出した文字列型のフィールドの間に2つ以上のフィールドは例外ではありませんことができます。たとえば、私たちは、あなたが「ID +名前」のアプローチに報告して算出した文字列フィールドスプライシングの番号と名前2種類を作業する必要があり、従業員のメッセージを表示する必要があります。ここでも、私たちは、各従業員に報告する必要があります「オールド・」ジョブ番号の前にテキストを増やします。今回は(文字列型定数のフィールドを含む)フィールドの文字列型に接合する必要があります。異なるデータベース・システムにおける文字列の連結は非常に異なっているので、ここでは、主流データベースの文字列連結の下の違いを説明します。

MySQLの

「1」+「3」、「」+「B」文字列連結は、「+」は、Java、C#などのような他のプログラミング言語でプラス記号によって達成されることができます。また、MYSQLで使用することができるプラス「+」など、次のSQLのように2つの文字列に接続されています。

 SELECT '12'+'33',FAge+'1' FROM T_Employee  

私たちは、次の出力結果に結果を見ることができます終了します。

びっくり、最初の列を慎重に観察しますか?この列には、私たちが望む結果は「1233」ではありません示しているが、2つの数の文字列と2つの数の平均で「12」と「33」、プラス記号と同じ文字列を持つ数「+」は、ここで第二の列と、同じ効果に接続されています。

(変換は、そのフィールドが0で失敗した場合に)時間のプラス「+」は、2つのフィールド(または複数のフィールド)に接続されたMYSQLでは、MySQLはフィールド次に、デジタルタイプフィールドの値を変換しようとし加えて。このように、計算された「12」+時刻「33」であろうMYSQL基づいて、「12」と「33」が理由で、次に計算値12 + 33、デジタル式12及び33の2つの文字列を変換しようとし私たちは45の結果を得ることができます。同様に、FAGEデジタルタイプ、そう変換なし、「1」は「1」+ FAgeを算出する際には文字列型は、MYSQL「1」を算出し、デジタル1を変換しようと、あるFAge + 1列を計算された値として。

MYSQLは、フィールド値の両端にしようプラス変換はフィールドが0の値と見なされ失敗した場合、デジタル型に変換しようとすると、例えば、我々は次のSQL文を実行します:

SELECT 'abc'+'123',FAge+'a' FROM T_Employee 

私たちは、次の出力結果に結果を見ることができます終了します。

スプライシングMYSQLの文字列がで使用されるCONCAT機能、CONCAT関数は、1つ以上のパラメータをサポートし、パラメータの型も文字を変換しようとする非文字列型の列型、非MYSQLのための文字列型の引数であってもよいです文字列型、concat関数は、オーダーパラメータの戻り値として文字列に一緒にすべてのパラメータを設定します。たとえば、計算フィールド外の形で情報をユーザーのクエリ複数のフィールドに、次のSQL文:
SELECT CONCAT('工号为:',FNumber,'的员工的幸福指数:',FSalary/(FAge-21)) FROM T_Employee完成我々は、次の出力結果で結果を見ることができます:

唯一つのパラメータの使用をサポートCONCAT、その後、CONCATは、文字列型の値を変換しようとの関数として、このパラメータの値として見ることができます。MySQLはまた、追加の機能を提供するスプライシングの文字列をCONCAT_WS、CONCAT_WSがスプライスされるために、指定された区切り文字列との間に添加することができる残りのパラメータであるが、それは、分離器を用いて第1のパラメータ値であります値の文字列は、スプライスされます

オラクル

Oracleは、使用“||”文字列のステッチは、例えば、以下のSQL文を実行します。

SELECT '工号为'||FNumber||'的员工姓名为'||FName FROM T_Employee WHERE FName IS NOT NULL 

私たちは、次の出力結果に結果を見ることができます終了します。

「||」に加えて、Oracleはまた、使用のCONCAT()関数は文字列の連結をサポートし、例えば、以下のSQL文を実行します。

SELECT CONCAT('工号:',FNumber) FROM T_Employee 

私たちが、次の出力結果に結果を見ることができます終了します

値は、接続されたCONCATの文字列でない場合、Oracleは文字列に変換しようとします。

そして、MYSQL CONCAT()関数が異なっている、OracleのCONCAT()関数は、次のSQLステートメントとして、スプライシング2以上の文字列でサポートされていない、2つのパラメータをサポートするOracleに間違っています:

SELECT CONCAT('工号为',FNumber,'的员工姓名为',FName) FROM T_Employee WHERE FName IS NOT NULL 

パラメータの数が無効です:実行した後にOracleは、次のエラーメッセージを報告します

複数の文字列は、スプライスされる場合は、複数のCONCAT()関数の巣を使用して、SQL上記のようなものであってもよいです。

SELECT CONCAT(CONCAT(CONCAT('工号为',FNumber),'的员工姓名为'),FName) FROM T_Employee WHERE FName IS NOT NULL

おすすめ

転載: www.cnblogs.com/heliusKing/p/11456480.html