Действительно ли возможно использовать Оператор выбора в sql Из пункта

Вы можете использовать lodash и его функцию get (npm i lodash && npm i --save-dev @types/lodash):

Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place.

В вашем случае это будет что-то вроде:

import * as _ from "lodash"; // or import { get } from "lodash"

// Get by path without default value
if (!_.isUndefined(_.get(exampleObject, 'first.second')) {
  // Not undefined
  // ...
}

Редактировать: Я перечитал ваш вопрос еще раз и больше не уверен, что мой ответ может вам помочь. Может быть, вы можете немного прояснить свой вопрос, чтобы я мог улучшить свой ответ.

22
задан JJJ 14 April 2012 в 10:33
поделиться

5 ответов

Принятие SQL Server:

необходимо было бы использовать динамический SQL. Создайте строку и затем назовите sp_executesql со строкой.

Редактирование: Еще лучше просто используйте если операторы, чтобы выполнить соответствующий оператор и присвоить значение переменной. Необходимо избежать динамического SQL, если это возможно.

6
ответ дан 29 November 2019 в 05:16
поделиться

Я не полагаю, что это возможно. С одной стороны, оптимизаторы запросов принимают определенный список подобных таблице вещей в ИЗ пункта.

самым простым обходным решением, о котором я могу думать, было бы ОБЪЕДИНЕНИЕ между этими двумя таблицами:

SELECT  md5
FROM    hr
WHERE   @clienttype = 'Employee'
AND     current = 2
UNION
SELECT  md5
FROM    other
WHERE   @clienttype = 'Member'
AND     current = 2;

Только одна половина ОБЪЕДИНЕНИЯ могла быть Правда, учитывая @clienttype предикат.

23
ответ дан 29 November 2019 в 05:16
поделиться

Нет, Вы не можете выбрать таблицу для запросов использования Оператора выбора. Операторы выбора только идут в рамках выражений, такой что касается значения столбца или как часть Вашего ГДЕ выражение.

Это должно сделать это при поиске всего одного значения:

IF @ClientType = 'Employee' BEGIN
    SET @Source = (SELECT Md5 FROM HR WHERE Current = 2)
END
ELSE IF @ClientType = 'Member' BEGIN
    SET @Source = (SELECT Md5 FROM Other WHERE Current = 2)
END
2
ответ дан 29 November 2019 в 05:16
поделиться

Так как Вы не определяете, с каким бэкендом SQL Вы идете вразрез, на это будет трудно правильно ответить....

Насколько я могу сказать, Вы не будете в состоянии не сделать это ни против SQL Server MS, ни против Interbase/Firebird. Я не могу говорить за другие серверы бэкэнда, хотя...

Marc

0
ответ дан 29 November 2019 в 05:16
поделиться

Я думаю, что довольно безопасно сказать, что ответ не является никаким путем. И это независимо от диалекта SQL.

0
ответ дан 29 November 2019 в 05:16
поделиться
Другие вопросы по тегам:

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