データベース(MSSQLServer,Oracle,DB 2,MySql)の一般的な文および問題(続き1の接続文字列)
16337 ワード
前の記事http://www.cnblogs.com/valiant1882331/p/4056403.html書きすぎたので、1編変えて、前の節に続きます文字列の接合 MySqlでは「+」を用いて2つの文字列をつなぎ合わせることができる.
View Code
実行が完了するとが出力されます.以下に説明します.Mysqlでは、+で2つのフィールドを接続すると、Mysqlはフィールド値を数値タイプに変換しようとします(変換に失敗するとデフォルトのフィールド値は0になります).その後、フィールドの加算を行います.したがって、'12'+'33'を計算すると、mysqlは「12」と「33」の2つの文字列を数値タイプの12と33に変換しようとします.そして12+33の値を計算するので、最初の列は45である、同様にfage+'1'を計算する際にfageは本来デジタルタイプであるため、変換を必要とせずに'1'を変換しようとし、その後fage+1を計算列の値として計算する.
View Code
実行が完了すると、正常出力 に変換できません. MYSQLで文字列の結合を行うにはCONCAT関数を使用します(CONCAT関数は1つ以上のパラメータをサポートしています.パラメータタイプは文字列タイプでも非文字列タイプでも構いません.非文字列タイプのパラメータmysqlでは文字列タイプに変換しようとします.CONCAT関数はすべてのパラメータの順序を1つの文字列に結合して戻り値とします).
View Code
実行が完了すると出力 concatは1つのパラメータのみの使用をサポートするが、この場合のconcatは、このパラメータ値を文字列タイプ値に変換しようとする関数 と見なすことができる. MYSQLには、文字列の結合を行う別の関数CONCAT_も用意されています.WS(CONCAT_WSは、最初のパラメータ値が使用される区切り文字であり、残りのパラメータが接続される文字列値である、接続される文字列間に指定された区切り文字を追加できます)
View Code
実行完了結果出力 MSSQLServer(MSSQLServerではプラス記号「+」を直接使用して文字列をつなぎ合わせることができます)
View Code
実行完了結果出力 Oracle(Oracleでは「|」を使用して文字列を結合し、MSSQLServerの「+」と同様にします)
View Code
実行完了出力結果;そして.「|」に加えて、CONCAT()関数を使用した文字列結合もサポートされています.
View Code
実行完了出力結果;CONCATで接続されている値が文字列でない場合、Oracleは文字列に変換しようとします.
View Code
実行済み出力結果 MYSQLのCONCAT()関数とは異なり、OracleのCONCAT()関数は2つのパラメータしかサポートされていません.そうしないと、パラメータが無効になります.複数の文字列の結合を行う場合は、複数のconcat()関数をネストして使用できます.
View Code
実行完了出力結果 DB 2(DB 2では「|」を使用して文字列をつなぎ合わせ、MSSQLServerのプラス記号「+」と同じように使用)
View Code
実行済み出力結果"|"に加え、DB 2ではCONCAT()関数による文字列結合もサポート
View Code
実行済み出力結果はOracleと異なり、CONCATに接続されている値が文字列でない場合、DB 2はタイプ変換を試みてエラーを報告しません.たとえば
View Code
実行後、DB 2には、「FUNCTION」というタイプの「CONCAT」という名前の、引数に対応する承認済みの例が見つかりませんでした!!!MYSQLのCONCAT()関数とは異なり、DB 2のCONCAT()関数は2つのパラメータのみをサポートする.複数の文字列をつなぎ合わせる場合は、複数のCONCAT()関数を使用してネストして使用できます.
View Code
実行完了出力結果
select '12'+'33',FAge+'1' from t_employee
View Code
実行が完了するとが出力されます.以下に説明します.Mysqlでは、+で2つのフィールドを接続すると、Mysqlはフィールド値を数値タイプに変換しようとします(変換に失敗するとデフォルトのフィールド値は0になります).その後、フィールドの加算を行います.したがって、'12'+'33'を計算すると、mysqlは「12」と「33」の2つの文字列を数値タイプの12と33に変換しようとします.そして12+33の値を計算するので、最初の列は45である、同様にfage+'1'を計算する際にfageは本来デジタルタイプであるため、変換を必要とせずに'1'を変換しようとし、その後fage+1を計算列の値として計算する.
select 'abc'+'123',fage+'a' from t_employee
View Code
実行が完了すると、正常出力
select concat(' :',fnumber,' :',fsalary/(fage-21)) from t_employee
View Code
実行が完了すると出力 concatは1つのパラメータのみの使用をサポートするが、この場合のconcatは、このパラメータ値を文字列タイプ値に変換しようとする関数
select concat_ws(',',fnumber,fage,fdepartment,fsalary)from t_employee
View Code
実行完了結果出力
select ' '+fnumber+' '+fname from t_employee where fname is not null
View Code
実行完了結果出力
SELECT ' '||FNumber||' '||FName FROM T_Employee WHERE FName IS NOT NULL
View Code
実行完了出力結果;そして.「|」に加えて、CONCAT()関数を使用した文字列結合もサポートされています.
SELECT CONCAT(' :',FNumber) FROM T_Employee
View Code
実行完了出力結果;CONCATで接続されている値が文字列でない場合、Oracleは文字列に変換しようとします.
SELECT CONCAT(' :',FAge) FROM T_Employee
View Code
実行済み出力結果 MYSQLのCONCAT()関数とは異なり、OracleのCONCAT()関数は2つのパラメータしかサポートされていません.そうしないと、パラメータが無効になります.複数の文字列の結合を行う場合は、複数のconcat()関数をネストして使用できます.
SELECT CONCAT(CONCAT(CONCAT(' ',FNumber),' '),FName) FROM T_Employee WHERE FName IS NOT NULL
View Code
実行完了出力結果
SELECT ' '||FNumber||' '||FName FROM T_Employee WHERE FName IS NOT NULL
View Code
実行済み出力結果"|"に加え、DB 2ではCONCAT()関数による文字列結合もサポート
SELECT CONCAT(' :',FNumber) FROM T_Employee
View Code
実行済み出力結果はOracleと異なり、CONCATに接続されている値が文字列でない場合、DB 2はタイプ変換を試みてエラーを報告しません.たとえば
--
SELECT CONCAT(' :',FAge) FROM T_Employee
View Code
実行後、DB 2には、「FUNCTION」というタイプの「CONCAT」という名前の、引数に対応する承認済みの例が見つかりませんでした!!!MYSQLのCONCAT()関数とは異なり、DB 2のCONCAT()関数は2つのパラメータのみをサポートする.複数の文字列をつなぎ合わせる場合は、複数のCONCAT()関数を使用してネストして使用できます.
SELECT CONCAT(CONCAT(CONCAT(' ',FNumber),' '),FName) FROM T_Employee WHERE FName IS NOT NULL
View Code
実行完了出力結果