1

たとえば、where句を使用して、テーブル内の複数のフィールドのnull値を一致させようとしています

 SELECT * FROM manage_users WHERE coalesce(surname, firstname, lastname, physical_address, postal_address, telephone_number, fax_number, cell_number, email,medical_aid_fund, medical_aid_number, allergies, emergency_contatct_person, emergency_contatct_number, id_number,gender, age_on_raceday, age_groups, shirt_size, type_of_club, roag_membership_number, csa_licence_number, provinical_running_licence_number, provinical_running_canoeing_number, tsa_licence_number, licence_number, number_of_comrade_marathon_completed, number_of_two_oceans_completed,    number_of_duzi_completed, number_of_nonstop_duzi_completd,number_of_amashova_completed, 
number_of_argus_completed, number_of_947_completed, number_of_midmar_mile_completed, make_of_running_shoes, make_of_road_bike, make_of_mtb, make_of_wetsuit) is NOT NULL and id='16'

これには合体を使用しましたが、正しい方法ですか。これを使用して期待される出力が得られません。誰でも結果を得るのを手伝ってもらえますか。それは大歓迎です。

4

2 に答える 2

4

COALESCE引数リストの最初の null 以外の値を返します。したがって、フィールドのいずれかが null でない場合、クエリは成功します。すべてのフィールドが null でない必要はありません。

代わりに以下を使用できます。

SELECT * FROM manage_users WHERE CONCAT(<list of columns>) is NOT NULL and id='16'

CONCAT()ほとんどの通常の関数と同様に、引数のいずれかが NULL の場合は NULL を返します。

空の値を確認するには、次を追加します。

AND LEAST(<list of string columns>) != ''

これは単なる文字列列である必要があります。で文字列と数字を混在さLEASTせると、すべての文字列が数字に変換され、数字で始まらない文字列はすべて に変換される0ため、適切なテストが行​​われません。

于 2013-07-30T06:47:53.163 に答える
1

null および空の値を受け入れないクエリ。上記の where 列に値がある行が選択されます。

Select * from manage_users where (surname and firstname and lastname and physical_address and postal_address) > ''
于 2013-07-30T07:50:34.140 に答える