Pernyataan Google Standard SQL terdiri dari serangkaian token. Token termasuk pengidentifikasi, pengidentifikasi kutipan, literal, kata kunci, operator, dan karakter khusus. Anda dapat memisahkan token dengan komentar atau spasi seperti spasi, backspace, tab, atau baris baru Show
PengidentifikasiPengidentifikasi adalah nama yang terkait dengan kolom, tabel, ekspresi jalur, dan lainnya. Mereka bisa atau dan beberapa Pengidentifikasi yang tidak dikutip
Pengidentifikasi yang dikutip
Contoh pengenalContoh ekspresi jalur
Contoh fungsi _Contoh operasi akses array
Contoh parameter kueri bernama _Contoh nama tabel
________12__13_______ 0 1 2Ekspresi jalurEkspresi jalur menjelaskan cara menavigasi ke objek dalam grafik objek dan umumnya mengikuti struktur ini _3
Contoh _4Nama tabelNama tabel mewakili nama tabel Nama tabel dapat berupa pengidentifikasi yang dikutip atau pengidentifikasi yang tidak dikutip. Jika tidak dikutip
Nama tabel bisa berupa yang menyertakan hingga tiga pengidentifikasi yang dikutip atau tidak dikutip
Misalnya. _3Nama tabel dapat berupa ekspresi jalur Contoh 5Nama kolomNama kolom mewakili nama kolom dalam tabel
Contoh _6LiteralLiteral mewakili nilai konstan dari tipe data bawaan. Beberapa, tetapi tidak semua, tipe data dapat diekspresikan sebagai literal String dan byte literalLiteral string mewakili nilai konstanta dari. Literal byte mewakili nilai konstan dari Literal string dan byte harus dikutip, baik dengan tanda kutip tunggal ( 6) atau ganda ( 7), atau dikutip tiga kali lipat dengan kelompok tiga tanda kutip tunggal ( 8) atau tiga ganda ( 9)Format untuk literal yang dikutipTabel berikut mencantumkan semua cara Anda dapat memformat literal yang dikutip LiteralExamplesDescriptionQuoted string
6) dapat berisi tanda kutip ganda ( 7) yang tidak lolos, serta kebalikannyaGaris miring terbalik ( _6) memperkenalkan escape sequence. Lihat tabel Escape Sequences di bawah iniString yang dikutip tidak boleh berisi baris baru, meskipun diawali dengan garis miring terbalik ( 6). String yang dikutip tiga kali lipat
Garis miring terbalik ( _6) memperkenalkan escape sequence. Lihat tabel Escape Sequences di bawah iniTanda garis miring terbalik yang tidak lolos ( 6) di akhir baris tidak diperbolehkanAkhiri string dengan tiga tanda kutip tanpa pengecualian dalam satu baris yang cocok dengan tanda kutip awal. Tali mentah
9 atau 00) ditafsirkan sebagai string mentah (terkadang digambarkan sebagai string regex)Karakter garis miring terbalik ( _6) tidak bertindak sebagai karakter pelarian. Jika garis miring terbalik diikuti oleh karakter lain terjadi di dalam literal string, kedua karakter tersebut dipertahankanString mentah tidak boleh diakhiri dengan garis miring terbalik dalam jumlah ganjil String mentah berguna untuk membuat ekspresi reguler. Awalan tidak peka huruf besar-kecil. Byte
05 atau 06) ditafsirkan sebagai byte. Byte mentah
9 dan 05 awalan. Prefiks ini dapat digabungkan dalam urutan apa pun dan tidak peka huruf besar-kecil. Misalnya, _12 dan 13 dan 14 semuanya setara. Lihat deskripsi string mentah untuk mempelajari lebih lanjut tentang apa yang dapat Anda lakukan dengan literal mentahEscape sequence untuk literal string dan byteTabel berikut mencantumkan semua escape sequence yang valid untuk merepresentasikan karakter non-alfanumerik dalam literal string dan byte. Urutan apa pun yang tidak ada dalam tabel ini menghasilkan kesalahan Escape SequenceDescription 15Bell 16Backspace 17Formfeed 18Newline 19Carriage Return 20Tab 21Vertical Tab 22Backslash ( 6) 24Question Mark ( 25) 26Double Quote ( 7) 28Single Quote ( 6) 30Backtick ( 31) 32Octal escape, with exactly 3 digits (in the range 0–7). Mendekode ke satu karakter Unicode (dalam string literal) atau byte (dalam byte literal). 33 atau 34Hex escape, dengan tepat 2 digit hex (0–9 atau A–F atau a–f). Mendekode ke satu karakter Unicode (dalam string literal) atau byte (dalam byte literal). Contoh
40Unicode escape, dengan huruf kecil 'u' dan tepat 4 digit hex. Hanya valid dalam string literal atau pengidentifikasiPerhatikan bahwa rentang D800-DFFF tidak diperbolehkan, karena ini adalah nilai unicode pengganti. 41Unicode escape, dengan huruf besar 'U' dan tepat 8 digit hex. Hanya valid dalam string literal atau pengidentifikasiRentang D800-DFFF tidak diperbolehkan, karena nilai ini adalah nilai unicode pengganti. Selain itu, nilai yang lebih besar dari 10FFFF tidak diperbolehkan Literal bilangan bulatLiteral bilangan bulat adalah urutan angka desimal (0–9) atau nilai heksadesimal yang diawali dengan " 42" atau " 43". Bilangan bulat dapat diawali dengan " 44" atau " 45" untuk masing-masing mewakili nilai positif dan negatif. Contoh _7Literal bilangan bulat ditafsirkan sebagai _46Literal bilangan bulat mewakili nilai konstan dari -- Valid. _5abc and dataField are valid identifiers. _5abc.dataField -- Valid. `5abc` and dataField are valid identifiers. `5abc`.dataField -- Invalid. 5abc is an invalid identifier because it is unquoted and starts -- with a number rather than a letter or underscore. 5abc.dataField -- Valid. abc5 and dataField are valid identifiers. abc5.dataField -- Invalid. abc5! is an invalid identifier because it is unquoted and contains -- a character that is not a letter, number, or underscore. abc5!.dataField -- Valid. `GROUP` and dataField are valid identifiers. `GROUP`.dataField -- Invalid. GROUP is an invalid identifier because it is unquoted and is a -- stand-alone reserved keyword. GROUP.dataField -- Valid. abc5 and GROUP are valid identifiers. abc5.GROUP 47 literalAnda dapat membuat 47 literal menggunakan kata kunci 47 diikuti dengan nilai floating point dalam tanda kutipContoh _8A 47 literal mewakili nilai konstanta dari-- Valid. _5abc and dataField are valid identifiers. _5abc.dataField -- Valid. `5abc` and dataField are valid identifiers. `5abc`.dataField -- Invalid. 5abc is an invalid identifier because it is unquoted and starts -- with a number rather than a letter or underscore. 5abc.dataField -- Valid. abc5 and dataField are valid identifiers. abc5.dataField -- Invalid. abc5! is an invalid identifier because it is unquoted and contains -- a character that is not a letter, number, or underscore. abc5!.dataField -- Valid. `GROUP` and dataField are valid identifiers. `GROUP`.dataField -- Invalid. GROUP is an invalid identifier because it is unquoted and is a -- stand-alone reserved keyword. GROUP.dataField -- Valid. abc5 and GROUP are valid identifiers. abc5.GROUP 52 literalAnda dapat membuat 52 literal menggunakan kata kunci 52 diikuti dengan nilai floating point dalam tanda kutipContoh _9A 52 literal mewakili nilai konstanta dariLiteral floating pointOpsi sintaks _0 57 mewakili satu atau lebih angka desimal (0 sampai 9) dan 58 mewakili penanda eksponen (e atau E)Contoh _1Literal numerik yang mengandung titik desimal atau penanda eksponen dianggap bertipe ganda Pemaksaan implisit dari literal floating point ke tipe float dimungkinkan jika nilainya berada dalam kisaran float yang valid Tidak ada representasi literal dari NaN atau infinity, tetapi string case-insensitive berikut dapat secara eksplisit dilemparkan ke float
Literal floating-point mewakili nilai konstan dari Array literalLiteral array adalah daftar elemen yang dipisahkan koma yang diapit tanda kurung siku. Kata kunci _59 adalah opsional, dan tipe elemen eksplisit T juga opsionalContoh _2Literal array mewakili nilai konstanta dari Struktur literalSebuah struct literal adalah sebuah struct yang bidangnya semuanya literal. Literal struktural dapat ditulis menggunakan salah satu sintaks untuk (sintaks Tuple, sintaks struct tanpa tipe, atau sintaks struct yang diketik) Perhatikan bahwa sintaks tuple memerlukan setidaknya dua bidang, untuk membedakannya dari ekspresi kurung biasa. Untuk menulis struct literal dengan satu bidang, gunakan sintaks struct tanpa tipe atau sintaks struct yang diketik ExampleOutput Type 60 61 62 63 64 65 66 67 68 69 70 69Literal struct mewakili nilai konstanta dari Literal tanggalSintaksis _3Literal tanggal berisi kata kunci 72 diikuti dengan literal string yang sesuai dengan format tanggal kanonis, diapit dengan tanda kutip tunggal. Literal tanggal mendukung rentang antara tahun 1 dan 9999, inklusif. Tanggal di luar rentang ini tidak validMisalnya, literal tanggal berikut menunjukkan 27 September 2014 _4Literal string dalam format tanggal kanonis juga secara implisit memaksa tipe DATE saat digunakan di mana ekspresi tipe DATE diharapkan. Misalnya, dalam kueri _5string literal 73 akan dipaksa menjadi literal tanggalTanggal literal mewakili nilai konstan dari Literal waktuSintaksis _6Literal waktu berisi kata kunci 74 dan literal string yang sesuai dengan format waktu kanonis, diapit tanda kutip tunggalMisalnya, waktu berikut mewakili 12. 30 hal. m _7Literal waktu merepresentasikan nilai konstan dari Literal datetimeSintaksis _8Literal datetime berisi kata kunci _75 dan literal string yang sesuai dengan format datetime kanonis, diapit tanda kutip tunggalMisalnya, datetime berikut mewakili 12. 30 hal. m. pada tanggal 27 September 2014 _9Literal datetime mendukung rentang antara tahun 1 dan 9999, inklusif. Tanggal dan waktu di luar rentang ini tidak valid Literal string dengan format datetime kanonis secara implisit memaksa literal datetime saat digunakan di mana ekspresi datetime diharapkan Misalnya 0Dalam kueri di atas, string literal 76 dipaksa menjadi literal datetimeLiteral datetime juga dapat menyertakan karakter opsional 77 atau 78. Ini adalah bendera untuk waktu dan digunakan sebagai pemisah antara tanggal dan waktu. Jika Anda menggunakan karakter ini, spasi tidak dapat dimasukkan sebelum atau sesudahnya. Ini valid 1Sebuah literal datetime mewakili nilai konstan dari Literal stempel waktuSintaksis 2 3Literal stempel waktu berisi kata kunci 79 dan literal string yang sesuai dengan format stempel waktu kanonis, diapit dengan tanda kutip tunggalLiteral stempel waktu mendukung rentang antara tahun 1 dan 9999, inklusif. Stempel waktu di luar rentang ini tidak valid Literal stempel waktu dapat menyertakan sufiks numerik untuk menunjukkan zona waktu 4Jika akhiran ini tidak ada, zona waktu default, UTC, akan digunakan Misalnya, stempel waktu berikut mewakili 12. 30 hal. m. pada 27 September 2014 di zona waktu default, UTC 5Untuk informasi selengkapnya tentang zona waktu, lihat Literal string dengan format stempel waktu kanonis, termasuk yang memiliki nama zona waktu, secara implisit memaksa literal stempel waktu saat digunakan di mana ekspresi stempel waktu diharapkan. Misalnya, dalam kueri berikut, string literal 80 dipaksa menjadi literal stempel waktu 6Literal stempel waktu dapat menyertakan karakter opsional ini
Jika Anda menggunakan salah satu karakter ini, spasi tidak dapat dimasukkan sebelum atau sesudahnya. Ini valid 7Literal timestamp merepresentasikan nilai konstan dari Zona waktuKarena literal stempel waktu harus dipetakan ke titik waktu tertentu, zona waktu diperlukan untuk menginterpretasikan literal dengan benar. Jika zona waktu tidak ditentukan sebagai bagian dari literal itu sendiri, maka Google Standard SQL menggunakan nilai zona waktu default, yang ditetapkan oleh implementasi Google Standard SQL Google Standard SQL merepresentasikan zona waktu menggunakan string dalam format kanonis berikut, yang merepresentasikan offset dari Coordinated Universal Time (UTC) Format _8Contoh _9Zona waktu juga dapat diekspresikan menggunakan string nama zona waktu dari database tz. Untuk referensi yang kurang komprehensif namun lebih sederhana, lihat Daftar zona waktu basis data tz di Wikipedia. Nama zona waktu kanonis memiliki format 86, seperti 87Catatan. Tidak semua nama zona waktu dapat dipertukarkan meskipun mereka melaporkan waktu yang sama selama bagian tahun tertentu. Misalnya, _87 melaporkan waktu yang sama dengan 89 selama Waktu Musim Panas, tetapi melaporkan waktu yang sama dengan 90 di luar Waktu Musim Panas. Contoh _0Literal intervalInterval literal mewakili nilai konstan dari. Ada dua jenis literal interval Literal interval dapat digunakan langsung di dalam pernyataan 91 dan sebagai argumen dalam beberapa fungsi yang mendukung tipe data intervalInterval literal dengan satu bagian datetimeSintaksis _1Sintaks bagian datetime tunggal mencakup ekspresi 46 dan satu. Misalnya _2Ketika tanda negatif mendahului bagian tahun atau bulan dalam interval literal, tanda negatif menyebar selama tahun dan bulan. Atau, ketika tanda negatif mendahului bagian waktu dalam literal interval, tanda negatif menyebar ke jam, menit, dan detik. Misalnya _3Untuk informasi selengkapnya tentang cara membuat interval dengan satu bagian datetime, lihat Interval literal dengan rentang bagian waktu-waktuSintaksis _4Sintaks bagian range datetime mencakup a , a , dan an Misalnya _5Ketika tanda negatif mendahului bagian tahun atau bulan dalam interval literal, tanda negatif menyebar selama tahun dan bulan. Atau, ketika tanda negatif mendahului bagian waktu dalam literal interval, tanda negatif menyebar ke jam, menit, dan detik. Misalnya _6Untuk informasi selengkapnya tentang cara membuat interval dengan rentang waktu bagian tanggal, lihat literal JSONSintaksis _7Literal JSON mewakili data berformat JSON Contoh _8Literal JSON mewakili nilai konstanta dari Sensitivitas kasusGoogle Standard SQL mengikuti aturan ini untuk sensitivitas huruf besar-kecil KategoriPeka huruf besar/kecil?CatatanKata KunciTidak Nama Fungsi BawaanTidak Nama Fungsi yang Ditentukan PenggunaYa Nama tabelLihat CatatanDataset dan nama tabel peka huruf besar/kecil kecuali jika opsi disetel ke 94. Nama kolomTidak Nilai stringYaPerbandingan stringYa Alias dalam kueriTidak Pencocokan ekspresi regulerLihat CatatanPencocokan ekspresi reguler peka huruf besar-kecil secara default, kecuali jika ekspresi itu sendiri menentukan bahwa itu harus peka huruf besar-kecil. _95 cocok YaKata kunci yang dipesanKata kunci adalah sekelompok token yang memiliki arti khusus dalam bahasa Google Standard SQL, dan memiliki karakteristik sebagai berikut
Google Standard SQL memiliki kata kunci yang dicadangkan berikut SEMUADAN SETIAP HIMPUNAN SEBAGAI ASC ASSERT_ROWS_MODIFIED PADA DI ANTARA OLEH KASUS PEMERAN MENYUSUN MENGANDUNG MEMBUAT MENYEBERANG KUBUS SAAT INI BAWAAN MENDEFINISIKAN DES BERBEDA KALAU TIDAK AKHIR ENUM MELARIKAN DIRI KECUALI MENGECUALIKAN ADA EKSTRAK PALSU MENGAMBIL MENGIKUTI UNTUK DARI PENUH KELOMPOK PENGELOMPOKAN GRUP HASH MEMILIKI JIKA MENGABAIKAN DI DALAM BATIN MEMOTONG SELANG KE DALAM ADALAH BERGABUNG LATERAL KIRI MENYUKAI MEMBATASI LIHATLAH MENGGABUNGKAN ALAMI BARU TIDAK BUKAN BATAL NULL DARI PADA ATAU MEMESAN LUAR LEBIH PARTISI MENDAHULUI PROTO MEMENUHI SYARAT JANGKAUAN REKURSIF MENGHORMATI BENAR ROLLUP BARIS PILIH MENGATUR BEBERAPA STRUKTUR CONTOH TABEL KEMUDIAN KE MERAWAT BENAR TAK TERBATAS PERSATUAN UNNEST MENGGUNAKAN KAPAN DI MANA JENDELA DENGAN DI DALAM Mengakhiri titik komaSecara opsional, Anda dapat menggunakan titik koma penghentian ( 96) saat mengirimkan pernyataan string kueri melalui Application Programming Interface (API)Dalam permintaan yang berisi banyak pernyataan, Anda harus memisahkan pernyataan dengan titik koma, tetapi titik koma biasanya opsional setelah pernyataan terakhir. Beberapa alat interaktif memerlukan pernyataan untuk mengakhiri titik koma Tanda komaSecara opsional, Anda dapat menggunakan tanda koma ( 97) di akhir daftar kolom dalam pernyataan 91. Anda mungkin memiliki tanda koma sebagai hasil dari membuat daftar kolom secara terprogramContoh _9Parameter kueriAnda dapat menggunakan parameter kueri untuk mengganti ekspresi arbitrer. Namun, parameter kueri tidak dapat digunakan untuk mengganti pengidentifikasi, nama kolom, nama tabel, atau bagian lain dari kueri itu sendiri. Parameter kueri ditentukan di luar pernyataan kueri API Klien memungkinkan pengikatan nama parameter ke nilai; Parameter kueri tidak dapat digunakan dalam isi SQL dari pernyataan ini. 99, 00, 01, dan 02Parameter kueri bernamaSintaksis _0Parameter kueri bernama dilambangkan menggunakan karakter yang didahului oleh 03. Parameter kueri bernama tidak dapat digunakan bersamaParameter kueri bernama dapat dimulai dengan pengidentifikasi atau kata kunci yang dicadangkan. Pengidentifikasi dapat dikutip atau dikutip Contoh Contoh ini mengembalikan semua baris di mana _04 sama dengan nilai parameter kueri bernama 05 _1Parameter kueri posisiParameter kueri posisi dilambangkan menggunakan 25 karakter. Parameter posisi dievaluasi berdasarkan urutan pengirimannya. Parameter kueri posisi tidak dapat digunakan bersamaContoh Kueri ini mengembalikan semua baris di mana _04 dan 08 sama dengan nilai yang diteruskan ke kueri ini. Urutan di mana nilai-nilai ini diteruskan dalam masalah. Jika nama belakang dimasukkan terlebih dahulu, diikuti dengan nama depan, hasil yang diharapkan tidak akan dikembalikan _2KomentarKomentar adalah urutan karakter yang diabaikan parser. Google Standard SQL mendukung jenis komentar berikut Komentar baris tunggalGunakan komentar satu baris jika Anda ingin komentar muncul di satu baris dengan sendirinya Contoh 3 4 5 6Komentar sebarisGunakan komentar sebaris jika Anda ingin komentar muncul di baris yang sama dengan pernyataan. Komentar yang diawali dengan _09 atau 10 harus muncul di sebelah kanan pernyataanContoh 7 8 9 0Komentar multi barisGunakan komentar multibaris jika Anda membutuhkan komentar untuk menjangkau beberapa baris. Komentar multibaris bersarang tidak didukung Bagaimana Anda lolos dari satu kutipan?Kutip tunggal harus diloloskan dengan garis miring terbalik pada string yang dikutip tunggal , dan kutip ganda pada string yang dikutip ganda. Bentuk alternatif untuk dua yang terakhir adalah '\u{nnnn}' dan '\U{nnnnnnnn}'.
Bagaimana Anda menghindari satu kutipan dari satu string yang dikutip?Anda perlu meng-escape satu kutipan ketika literal dilampirkan dalam satu kode menggunakan backslash(\) atau perlu meng-escape ganda .
Bagaimana Anda menghindari karakter di Google Sheets?Untuk melepaskan karakter agar tidak diperlakukan sebagai bagian dari ekspresi reguler, gunakan karakter \ .
Bisakah Anda menggunakan tanda kutip tunggal dalam karakter pelarian tanda kutip tunggal?Memasukkan karakter dalam tanda kutip tunggal (''') mempertahankan nilai literal setiap karakter di dalam tanda kutip. Kutipan tunggal tidak boleh muncul di antara tanda kutip tunggal, meskipun diawali dengan garis miring terbalik . Steve B. |