Oracle sql возвращает true, если существует вопрос

Вопрос:Как проверить, существует ли какой-либо конкретный элемент в таблице - как я могу вернуть true или false? У меня есть таблица с user_id user_password user_secretQ Верно, я хочу сделать это: если в столбце user_id существует конкретный user_id, тогда верните true - в противном случае верните false. Лучший ответ: В Oracle SQL не существует логического типа.

Вопрос:

Как проверить, существует ли какой-либо конкретный элемент в таблице – как я могу вернуть true или false?

У меня есть таблица с

  • user_id
  • user_password
  • user_secretQ

Верно, я хочу сделать это: если в столбце user_id существует конкретный user_id, тогда верните true – в противном случае верните false.

Лучший ответ:

В Oracle SQL не существует логического типа. Вам нужно будет вернуть 1 или 0, или некоторые из них и действовать соответственно:

SELECT CASE WHEN MAX(user_id) IS NULL THEN ‘NO’ ELSE ‘YES’ END User_exists FROM user_id_table WHERE user_id = ‘some_user’; Ответ №1

В PL/SQL вы можете сделать это:

function user_exists (p_user_id users.user_id%type) return boolean is l_count integer; begin select count(*) into l_count from users where user_id = p_user_id; return (l_count > 0); end;

Затем это будет использоваться при вызове PL/SQL следующим образом:

if user_exists(‘john’) then dbms_output.put_Line(‘John exists’); end if;

ПРИМЕЧАНИЕ. Я использовал счетчик (*) в запросе, зная, что он вернет только 1 или 0 в случае поиска первичного ключа. Если может быть больше одной строки, я бы добавил “и rownum = 1” в запрос, чтобы предотвратить излишнее подсчет многих записей, чтобы узнать, существует ли какой-либо файл:

function user_has_messages (p_user_id users.user_id%type) return boolean is l_count integer; begin select count(*) into l_count from messages where user_id = p_user_id AND ROWNUM = 1; return (l_count > 0); end; Ответ №2

Oracle RDBMS не имеет логических типов данных, вы можете использовать только логические переменные в PL/SQL.

Если вы просто хотите вернуть строки “ИСТИНА” и “ЛОЖЬ”,
вы можете это сделать.

SELECT ‘TRUE’ FROM DUAL WHERE EXISTS (SELECT ‘x’ FROM table WHERE user_id = ‘id’) UNION SELECT ‘FALSE’ FROM DUAL WHERE NOT EXISTS (SELECT ‘x’ FROM table WHERE user_id = ‘id’)

Мне нравится @DCookie запрос, хотя.

Ответ №3

Или вы можете это сделать:

select decode(max(USER_ID), null, ‘FALSE’, ‘TRUE’) BOOL_VAL from USER_TABLE where USER_ID = [some USER_ID here] Ответ №4

select count(*) from table where userid = :userid and rownum <= 1); — If exists then 1 else 0

Оцените статью
Добавить комментарий