データベース(MSSQLServer,Oracle,DB 2,MySql)の一般的な文および問題(続き1の接続文字列)

16337 ワード

前の記事http://www.cnblogs.com/valiant1882331/p/4056403.html書きすぎたので、1編変えて、前の節に続きます
  • 文字列の接合
  • MySqlでは「+」を用いて2つの文字列をつなぎ合わせることができる.

    select '12'+'33',FAge+'1' from t_employee

    View Code
    実行が完了すると数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)が出力されます.以下に説明します.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
    実行が完了すると、正常出力数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)
  • に変換できません.
  • MYSQLで文字列の結合を行うにはCONCAT関数を使用します(CONCAT関数は1つ以上のパラメータをサポートしています.パラメータタイプは文字列タイプでも非文字列タイプでも構いません.非文字列タイプのパラメータmysqlでは文字列タイプに変換しようとします.CONCAT関数はすべてのパラメータの順序を1つの文字列に結合して戻り値とします).

    select concat('   :',fnumber,'        :',fsalary/(fage-21)) from t_employee

    View Code
    実行が完了すると出力 concatは1つのパラメータのみの使用をサポートするが、この場合のconcatは、このパラメータ値を文字列タイプ値に変換しようとする関数
  • と見なすことができる.
  • MYSQLには、文字列の結合を行う別の関数CONCAT_も用意されています.WS(CONCAT_WSは、最初のパラメータ値が使用される区切り文字であり、残りのパラメータが接続される文字列値である、接続される文字列間に指定された区切り文字を追加できます)

    select concat_ws(',',fnumber,fage,fdepartment,fsalary)from t_employee

    View Code
    実行完了結果出力数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)
  • MSSQLServer(MSSQLServerではプラス記号「+」を直接使用して文字列をつなぎ合わせることができます)

    select '   '+fnumber+'      '+fname from t_employee where fname is not null

    View Code
    実行完了結果出力数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)
  • Oracle(Oracleでは「|」を使用して文字列を結合し、MSSQLServerの「+」と同様にします)

    SELECT '   '||FNumber||'      '||FName FROM T_Employee WHERE FName IS NOT NULL

    View Code
    実行完了出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串);そして.「|」に加えて、CONCAT()関数を使用した文字列結合もサポートされています.

    SELECT CONCAT('  :',FNumber) FROM T_Employee

    View Code
    実行完了出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串);CONCATで接続されている値が文字列でない場合、Oracleは文字列に変換しようとします.

    SELECT CONCAT('  :',FAge) FROM T_Employee

    View Code
    実行済み出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串) MYSQLのCONCAT()関数とは異なり、OracleのCONCAT()関数は2つのパラメータしかサポートされていません.そうしないと、パラメータが無効になります.複数の文字列の結合を行う場合は、複数のconcat()関数をネストして使用できます.

    SELECT CONCAT(CONCAT(CONCAT('   ',FNumber),'      '),FName) FROM T_Employee WHERE FName IS NOT NULL

    View Code
    実行完了出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)
  • DB 2(DB 2では「|」を使用して文字列をつなぎ合わせ、MSSQLServerのプラス記号「+」と同じように使用)

    SELECT '   '||FNumber||'      '||FName FROM T_Employee WHERE FName IS NOT NULL

    View Code
    実行済み出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)"|"に加え、DB 2ではCONCAT()関数による文字列結合もサポート

    SELECT CONCAT('  :',FNumber) FROM T_Employee

    View Code
    実行済み出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)は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
    実行完了出力結果数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)