Добавьте переменные к кортежу

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() также не делает это.

252
задан Nathan 8 August 2014 в 13:51
поделиться

5 ответов

Кортежи неизменяемы; вы не можете изменить, какие переменные они содержат после построения. Однако вы можете объединить или разделить их, чтобы сформировать новые кортежи:

a = (1, 2, 3)
b = a + (4, 5, 6)
c = b[1:]

И, конечно же, построить их из существующих значений:

   name = "Joe"
   age = 40
   location = "New York"
   joe = (name, age, location)
329
ответ дан 23 November 2019 в 02:51
поделиться

Это так просто:

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 неизменяемы , поэтому вы не можете добавлять переменные в кортеж, если он создается.

7
ответ дан 23 November 2019 в 02:51
поделиться

«после добавления информации в базу данных, следует ли мне удалить кортеж? Я имею в виду, что мне больше не нужен кортеж».

Нет.

Как правило, нет причин для удалить что-нибудь. Есть несколько особых случаев удаления, но они очень и очень редки.

Просто определите узкую область видимости (например, определение функции или функцию метода в классе), и объекты будут собраны сборщиком мусора в конце область.

Не беспокойтесь об удалении.

[Примечание. Я работал с парнем, который, помимо попыток удаления объектов, всегда писал методы «сброса», чтобы очистить их. Как будто он собирался их спасти и использовать повторно. Тоже глупое самомнение. Просто игнорируйте предметы, которые вы больше не используете. Если вы определяете свои функции в достаточно небольших блоках кода, вам больше не о чем думать.]

7
ответ дан 23 November 2019 в 02:51
поделиться

Как отмечали другие ответы, вы не можете изменить существующий кортеж, но вы всегда можете создать новый кортеж (который может принимать некоторые или все элементы из существующих кортежей и / или других источников).

Например, если все интересующие элементы находятся в скалярных переменных, и вы знаете имена этих переменных:

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) ), но подход макет может быть полезен в некоторых более сложных случаях (например, когда используемые имена также определяются динамически и добавляются к списку во время вычисления).

3
ответ дан 23 November 2019 в 02:51
поделиться

Я почти уверен, что синтаксис для этого в Python следующий:

user_input1 = raw_input("Enter Name: ")
user_input2 = raw_input("Enter Value: ")
info = (user_input1, user_input2)

после установки кортежи не могут быть изменены.

2
ответ дан 23 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: