Menjadi seorang otodidak pemula, saya menciptakan masalah besar bagi diriku sendiri. Sebelum memasukkan data ke database saya, saya've telah mengubah apostrof (') dalam string, untuk double quotes (""), bukannya diperlukan back-slash dan apostrof (\'), yang MySQL benar-benar membutuhkan.
Sebelum meja saya tumbuh lebih dari 200.000 baris yang sudah ada, saya pikir itu yang terbaik untuk memperbaiki masalah ini segera. Jadi saya melakukan riset dan menemukan SQL MENGGANTIKAN fungsi yang lebih besar, tapi saya'm sekarang bingung.
Di ASP, saya melakukan ini:
str = Replace(str,"'","""")
Jika saya melihat saya database di SQL Workbench, simbol saya bertobat sekarang kutip tunggal ("), yang telah saya bingung sedikit. Saya mengerti mengapa hal itu berubah dari ganda ke tunggal, tapi aku don't tahu mana yang saya'm dimaksudkan untuk mengubah sekarang.
Untuk pergi melalui dan memperbaiki masalah saya menggunakan SQL GANTI, sekarang saya mengubah tanda kutip tunggal (") untuk back-slash dan apostrof (\') atau apakah saya mengubah tanda kutip ganda ("") untuk back-slash dan apostrof (\')?
Untuk contoh ini:
SQL = " SELECT REPLACE(myColumn,"""","\'") FROM myTable "
atau ini:
SQL = " SELECT REPLACE(myColumn,""","\'") FROM myTable "
Saya harap saya menjelaskan sendiri dengan baik, saran diterima dengan syukur seperti biasa. Pertanyaan tentang pertanyaan saya, mohon komentar.
Banyak terima kasih
-- UPDATE --
Saya telah mencoba mengikuti permintaan tapi masih gagal untuk mengubah ( " ) data:
SELECT REPLACE(caption,'\"','\'') FROM photos WHERE photoID = 3371
SELECT REPLACE(caption,'"','\'') FROM photos WHERE photoID = 3371
SELECT REPLACE(caption,'""','\'') FROM photos WHERE photoID = 3371
Namun jika saya cari:
SELECT COUNT(*) FROM photos WHERE caption LIKE '%"%'
Saya mendapatkan 16,150 baris.
-- UPDATE 2 --
Yah, aku telah menciptakan 'solusi'. Saya berhasil mengkonversi seluruh kolom cukup cepat menulis ASP script, menggunakan SQL ini:
SELECT photoID, caption FROM photos WHERE caption LIKE '%""%';
dan kemudian di ASP yang saya lakukan:
caption = Replace(caption,"""","\'")
Tapi aku masih ingin tahu kenapa aku tak't mencapai itu dengan SQL?
Hanya menjalankan PILIH
pernyataan tidak akan berpengaruh pada data. Anda harus menggunakan aplikasi UPDATE
pernyataan dengan MENGGANTI
untuk membuat perubahan terjadi:
UPDATE photos
SET caption = REPLACE(caption,'"','\'')
Berikut adalah contoh: http://sqlize.com/7FjtEyeLAh
Mengganti karakter di bawah ini
~ ! @ # $ % ^ & * ( ) _ +
` - =
{ } |
[ ] \
: "
; '
< > ?
, .
dengan SQL ini
SELECT note as note_original,
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(note, '\"', ''),
'.', ''),
'?', ''),
'`', ''),
'<', ''),
'=', ''),
'{', ''),
'}', ''),
'[', ''),
']', ''),
'|', ''),
'\'', ''),
':', ''),
';', ''),
'~', ''),
'!', ''),
'@', ''),
'#', ''),
'$', ''),
'%', ''),
'^', ''),
'&', ''),
'*', ''),
'_', ''),
'+', ''),
',', ''),
'/', ''),
'(', ''),
')', ''),
'-', ''),
'>', ''),
' ', '-'),
'--', '-') as note_changed FROM invheader