SELECT
CASE WHEN LEN(listing.OfferText) > 0 THEN listing.OfferText
ELSE COALESCE(Company.OfferText, '') END
AS Offer_Text,
...
В этом примере, если listing.OfferText
является ПУСТЫМ, LEN () функция должна также возвратить ПУСТОЙ УКАЗАТЕЛЬ, но это все еще не> 0.
Обновление
я изучил некоторые вещи за эти 5 1/2 лет начиная с регистрации этого и делаю это очень по-другому теперь:
COALESCE(NULLIF(listing.OfferText,''), Company.OfferText, '')
Это подобно принятому ответу, но он также имеет нейтрализацию в случае, если Company.OfferText
является также пустым. Ни один из других текущих ответов с помощью NULLIF()
также не делает это.
Кортежи неизменяемы; вы не можете изменить, какие переменные они содержат после построения. Однако вы можете объединить или разделить их, чтобы сформировать новые кортежи:
a = (1, 2, 3)
b = a + (4, 5, 6)
c = b[1:]
И, конечно же, построить их из существующих значений:
name = "Joe"
age = 40
location = "New York"
joe = (name, age, location)
Это так просто:
info_1 = "one piece of info"
info_2 = "another piece"
vars = (info_1, info_2)
# 'vars' is now a tuple with the values ("info_1", "info_2")
Однако кортежи в Python неизменяемы , поэтому вы не можете добавлять переменные в кортеж, если он создается.
«после добавления информации в базу данных, следует ли мне удалить кортеж? Я имею в виду, что мне больше не нужен кортеж».
Нет.
Как правило, нет причин для удалить что-нибудь. Есть несколько особых случаев удаления, но они очень и очень редки.
Просто определите узкую область видимости (например, определение функции или функцию метода в классе), и объекты будут собраны сборщиком мусора в конце область.
Не беспокойтесь об удалении.
[Примечание. Я работал с парнем, который, помимо попыток удаления объектов, всегда писал методы «сброса», чтобы очистить их. Как будто он собирался их спасти и использовать повторно. Тоже глупое самомнение. Просто игнорируйте предметы, которые вы больше не используете. Если вы определяете свои функции в достаточно небольших блоках кода, вам больше не о чем думать.]
Как отмечали другие ответы, вы не можете изменить существующий кортеж, но вы всегда можете создать новый кортеж (который может принимать некоторые или все элементы из существующих кортежей и / или других источников).
Например, если все интересующие элементы находятся в скалярных переменных, и вы знаете имена этих переменных:
def maketuple(variables, names):
return tuple(variables[n] for n in names)
, которые будут использоваться, например, как в этом примере:
def example():
x = 23
y = 45
z = 67
return maketuple(vars(), 'x y z'.split())
, конечно, в этом случае будет проще выражается как (x, y, z)
(или даже полностью исключая имена, (23, 45, 67)
), но подход макет
может быть полезен в некоторых более сложных случаях (например, когда используемые имена также определяются динамически и добавляются к списку во время вычисления).
Я почти уверен, что синтаксис для этого в Python следующий:
user_input1 = raw_input("Enter Name: ")
user_input2 = raw_input("Enter Value: ")
info = (user_input1, user_input2)
после установки кортежи не могут быть изменены.