Laman » bagaimana untuk » Cari Untuk Baris Dengan Watak Khas dalam SQL Server

    Cari Untuk Baris Dengan Watak Khas dalam SQL Server

    Semasa mengatasi masalah pengaturcaraan hari ini, saya perhatikan bahawa anda tidak boleh menggunakan carian LIKE untuk lajur rentetan yang mengandungi aksara khas seperti% atau _ tanpa menggunakan sintaks khas. Mengimbas masalah hanya mengambil masa beberapa minit, tetapi mengingati sintaks selalu lebih mudah jika anda menulis tentangnya.

    Jadi ya, jawatan ini semata-mata untuk faedah saya. Semoga ia dapat membantu orang lain juga.

    Katakan anda ingin mencari mana-mana medan yang mengandungi teks "100%", jadi anda menyusun pertanyaan ini:

    SELECT * FROM tablename WHERE fieldname LIKE '% 100 %%'

    Daripada apa yang anda mahu, anda akan mendapat semua baris yang mengandungi "100" serta baris yang mengandungi "100%".

    Masalah di sini adalah bahawa SQL Server menggunakan tanda persen, underscore, dan kurungan persegi sebagai aksara khas. Anda tidak boleh menggunakannya sebagai watak biasa dalam pertanyaan LIKE tanpa melarikan diri.

    Melarikan diri pendakap persegi

    Anda boleh mengelilingi% atau _ dengan kurungan persegi untuk memberitahu SQL Server bahawa watak di dalamnya adalah watak biasa.

    PILIH * DARI tablename WHERE nama lapangan LIKE '% 100 [%]%'

    Sintaks ESCAPE T-SQL

    Sebagai alternatif, anda boleh menambah pengendali ESCAPE ke pertanyaan anda, dan menambah \ character sebelum nilai yang anda mahu keluar.

    SELECT * FROM tablename WHERE fieldname LIKE '% 100 \ %%' ESCAPE '\'

    Bahagian ESCAPE \ '\' dalam pertanyaan memberitahu enjin SQL untuk menafsirkan aksara selepas \ sebagai watak literal dan bukan sebagai wildcard.

    Secara peribadi saya dapati kaedah kedua lebih mudah untuk ditangani, dan anda boleh menggunakannya untuk melepaskan pendakap persegi juga.