import re,datetime s="2008-09-03T20:56:35.450686Z" d=datetime.datetime(*map(int, re.split('[^\d]', s)[:-1]))
Привет, мне было интересно, почему MYSQL использует один знак равенства в условных операторах вместо более типичных двух знаков равенства. Есть ли для этого техническая / историческая причина? Спасибо.
Сравнение гораздо более распространено в SQL
, чем присваивание.
Вот почему SQL
использует более короткий синтаксис для выполнения более общих задач.
В классическом ] SQL
, сравнение можно отличить от присваивания по контексту (присваивание может быть только в предложении SET
оператора UPDATE
), поэтому один оператор может использоваться для обеих операций .
В расширении MySQL
для SQL
присвоение переменной сеанса обозначается как : =
Скорее исторический.
Это SQL. Для сравнения с начала 70-х годов используется единственный знак равенства.
В SQL никогда не бывает двусмысленности.
В исходном Руководстве по стандарту SQL от CJDate (издание 1987 г.), =
для назначения используется только в предложении SET
в UPDATE
. Везде =
используется для сравнения.
Но в других языках, таких как C / C ++ / C # / Java, =
может использоваться как присваивание, но также возвращает значение. Итак, a = b
означает «установить a
равным b
и вернуть a
», тогда как a == b
] означает «вернуть истину
, если a
и b
равны». (Это приводит к очень распространенной ошибке в программах на C, поскольку if (a = b)
и if (a == b)
оба допустимы, поскольку результат не обязательно должен быть логическим значением.)
Некоторые языки, например JavaScript / ECMAScript также вводит ===
в качестве третьего типа сравнения. На этих языках ==
означает «преобразовать в тот же тип и сравнить», тогда как ===
означает «вернуть истину
, только если они одного типа и одинаковы. значение "