sql >> Database teknologi >  >> RDS >> Oracle

Oracle-forespørgselsdata, hvor kolonneværdi med komma for at kontrollere værdien indeholder eller ej

Du skal tjekke for en understreng omgivet af afgrænsningerne:

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

En bedre måde ville dog være at ændre din databasetabel, så du ikke gemmer flere elementer i én værdi:

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 )
);

Derefter kan du gemme værdierne individuelt (og nemt søge efter subnet-intervaller) og tilføje dem til profiltabellen efter behov.



  1. MySQL enkelt sætning for at flette to tabeller

  2. Få hver time for et tidsinterval

  3. Heltal vs char for DB record egenskab

  4. Java MySQL Timestamp tidszone problemer