Вы можете использовать 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
// ...
}
Редактировать: Я перечитал ваш вопрос еще раз и больше не уверен, что мой ответ может вам помочь. Может быть, вы можете немного прояснить свой вопрос, чтобы я мог улучшить свой ответ.
Принятие SQL Server:
необходимо было бы использовать динамический SQL. Создайте строку и затем назовите sp_executesql со строкой.
Редактирование: Еще лучше просто используйте если операторы, чтобы выполнить соответствующий оператор и присвоить значение переменной. Необходимо избежать динамического SQL, если это возможно.
Я не полагаю, что это возможно. С одной стороны, оптимизаторы запросов принимают определенный список подобных таблице вещей в ИЗ пункта.
самым простым обходным решением, о котором я могу думать, было бы ОБЪЕДИНЕНИЕ между этими двумя таблицами:
SELECT md5
FROM hr
WHERE @clienttype = 'Employee'
AND current = 2
UNION
SELECT md5
FROM other
WHERE @clienttype = 'Member'
AND current = 2;
Только одна половина ОБЪЕДИНЕНИЯ могла быть Правда, учитывая @clienttype предикат.
Нет, Вы не можете выбрать таблицу для запросов использования Оператора выбора. Операторы выбора только идут в рамках выражений, такой что касается значения столбца или как часть Вашего ГДЕ выражение.
Это должно сделать это при поиске всего одного значения:
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
Так как Вы не определяете, с каким бэкендом SQL Вы идете вразрез, на это будет трудно правильно ответить....
Насколько я могу сказать, Вы не будете в состоянии не сделать это ни против SQL Server MS, ни против Interbase/Firebird. Я не могу говорить за другие серверы бэкэнда, хотя...
Marc
Я думаю, что довольно безопасно сказать, что ответ не является никаким путем. И это независимо от диалекта SQL.