sql >> Databáze >  >> RDS >> Oracle

Data dotazu Oracle, kde hodnota sloupce s čárkou pro kontrolu hodnota obsahuje nebo ne

Musíte zkontrolovat podřetězec obklopený oddělovači:

SELECT PROFILEID
FROM   WA_BT_TBL_PROFILE P
WHERE  ', ' || P.ALLOWED_IP_ADDRESS || ', ' LIKE '%, 192.168.183.28, %';

Lepším způsobem by však bylo změnit tabulku databáze tak, abyste neukládali více položek do jedné hodnoty:

CREATE TABLE Allowed_IP_Addresses(
  PROFILEID          VARCHAR2(20)
                     CONSTRAINT AllowIP__ProfileID__FK REFERENCES WA_BT_TBL_PROFILE( PROFILEID ),
  CLASSA             NUMBER(3,0),
  CLASSB             NUMBER(3,0),
  CLASSC             NUMBER(3,0),
  CLASSD             NUMBER(3,0),
  IP_ADDRESS         VARCHAR2(15)
                     GENERATED ALWAYS AS (CLASSA||'.'||CLASSB||'.'||CLASSC||'.'||CLASSD) VIRTUAL,
  CONSTRAINT AllowIP__P_A_B_C_D__PK PRIMARY KEY ( PROFILEID, CLASSA, CLASSB, CLASSC, CLASSD )
);

Poté můžete uložit hodnoty jednotlivě (a snadno vyhledávat rozsahy podsítí) a podle potřeby je připojit k tabulce profilu.



  1. Spojení 2 tabulek v SELECT (MYSQL/PHP)

  2. 4 způsoby, jak získat seznam plánů v SQL Server Agent (T-SQL)

  3. PHP PDO SQL vrací pouze jeden řádek dat namísto všech řádků

  4. Jak vypíšete primární klíč tabulky serveru SQL?