sql >> Databasteknik >  >> RDS >> Oracle

2 sätt att returnera rader som inte innehåller numeriska värden i Oracle

Följande exempel returnerar endast de rader som inte innehåller några numeriska siffror i en given kolumn i Oracle Database.

Exempeldata

Anta att vi har en tabell med följande data:

SELECT ProductName 
FROM Products;

Resultat:

Left Handed Screwdriver
Right Handed Screwdriver
Bottomless Coffee Cup (4 pack)
Urban Dictionary Version 2.3
Beer Water
10 Songs

Tabellen ProductName använder en varchar2 datatyp, och så innehåller den teckendata. Men den kan också innehålla numeriska siffror.

Exempel 1 – Regex

Här är en fråga vi kan använda för att returnera alla rader som inte innehåller numeriska siffror:

SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[0-9]+');

Resultat:

Left Handed Screwdriver
Right Handed Screwdriver
Beer Water

Exempel 2 – POSIX

I Oracle Database, REGEXP_LIKE villkoret överensstämmer med POSIX standarduttrycksstandard. Därför kan vi få samma resultat med följande fråga:

SELECT ProductName
FROM Products 
WHERE NOT REGEXP_LIKE(ProductName, '[[:digit:]]');

Resultat:

Left Handed Screwdriver
Right Handed Screwdriver
Beer Water

  1. SSIS - värdet kan inte konverteras på grund av en potentiell förlust av data

  2. COPY med dynamiskt filnamn

  3. SQL Unik begränsning över flera tabeller

  4. SQL delar upp värden till flera rader