Mysql kullanıyorum ve boş değerli bir sütunu güncellemem gerekiyor. Bu kadar farklı yolu denedim ve aldığım en iyi şey boş bir dizi.
Bunu yapmak için özel bir sözdizimi var mı?
Mysql kullanıyorum ve boş değerli bir sütunu güncellemem gerekiyor. Bu kadar farklı yolu denedim ve aldığım en iyi şey boş bir dizi.
Bunu yapmak için özel bir sözdizimi var mı?
Yanıtlar:
Özel sözdizimi yok:
CREATE TABLE your_table (some_id int, your_column varchar(100));
INSERT INTO your_table VALUES (1, 'Hello');
UPDATE your_table
SET your_column = NULL
WHERE some_id = 1;
SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
| 1 | NULL |
+---------+-------------+
1 row in set (0.00 sec)
NULL
SQL'de özel bir değerdir. Yani bir özelliği sıfırlamak için şunu yapın:
UPDATE table SET column = NULL;
IS
Bunun yerine kullanın =
, sorunlu örnek söz dizimini çözecektir:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Sütununuzun boş olup olmadığına bakmayı unutmayın. Bunu kullanarak yapabilirsin
mysql> desc my_table;
Sütununuz boş olamazsa, değeri null olarak ayarladığınızda, ona cast değeri olacaktır.
İşte bir örnek
mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name |
+-----+-------------+
| 0 | without num |
| 2 | |
+-----+-------------+
2 rows in set (0.00 sec)
mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)
Benzer bir sorunla karşılaşanlar için, bir SET = NULL
sorguyu 'simüle ederken' PHPMyAdmin'in bir hata atacağını buldum . Bu bir kırmızı ringa .. sadece sorguyu çalıştırın ve her şey yoluna girecek.
Yukarıdaki cevaplarda, aynı şekilde birçok yol ve tekrar önerilmiştir. Soru sorulduğu gibi bir cevap aradım ama burada bulamadım.
Ancak yukarıdaki sorunun tersi "boş değerli bir sütunu güncelle" "Sütundaki TÜM SATIRLARI BOŞ OLARAK GÜNCELLE" olabilir
Böyle bir durumda işleri takiben
update table_name
set field_name = NULL
where field_name is not NULL;
is
is not
mysql'de de çalışır
Güncelleme sorgusunu kullanarak null değeri ayarlamak istiyorsanız, sütun değerini NULL (tırnak işaretleri olmadan) olarak ayarlayın, tablename ayarlayın sütun adı = NULL
Ancak, alan değerini doğrudan mysql workbench içinde düzenliyorsanız, seçilen sütuna boş değer eklemek için (Esc + del) tuş vuruşunu kullanın.
is
yerine kullan=
Örneğin: Select * from table_name where column is null
Gerçek bir boştan ziyade boş dizenin başka bir olası nedeni , alanın bir dizin olması veya bir dizinin parçası olmasıdır. Bu bana oldu: phpMyAdmin'i kullanarak, tablolarımdan birindeki bir alanın yapısını " Null " onay kutusunu işaretleyip " Kaydet " düğmesine basarak NULL'lara izin verecek şekilde düzenledim . " Tablo fiyatlandırması başarıyla değiştirildi " görüntülendi, bu nedenle değişikliğin gerçekleştiğini varsaydım - değişmedi. Tüm bu alanları NULL olarak ayarlamak için bir GÜNCELLEME yaptıktan sonra , bunun yerine boş dizelere ayarlandılar , bu yüzden tablo yapısına tekrar baktım ve " Null"bu alan için sütun" olarak ayarlandı hayır. İşte o zaman alanın Birincil anahtarın parçası olduğunu fark ettim !
takip edersen
UPDATE table SET name = NULL
MYSQL'DE "" NULL değil, sorgunuz anlamına gelir
SELECT * FROM table WHERE name = NULL
çalışmamak ya da kendini hayal kırıklığına uğratmamak
Buradaki sorunun, tırnakların dize değerinize değişmez değerler olarak girilmiş olmasından şüpheleniyorum. Şunları kullanarak bu sütunları null olarak ayarlayabilirsiniz:
UPDATE table SET col=NULL WHERE length(col)<3;
Elbette önce bu değerlerin gerçekten "" aşağıdaki gibi bir şeyle "" olup olmadığını kontrol etmelisiniz:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
Ekte kullanabiliriz
$arrEntity=$entity->toArray();
foreach ($arrEntity as $key => $value) {
if (trim($entity->$key) == '' && !is_null($entity->$key) && !is_bool($entity->$key)){
unset($entity->$key);
}
}
Güncellemede kullanabiliriz
$fields=array();
foreach ($fields as $key => $value) {
if (trim($value) == '' && !is_null($value) && !is_bool($value)){
$fields[$key] = null;
}
}