---
title: "Filtrera bort rader som innehåller ett visst tecken"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/154817-filtrera-bort-rader-som-innehåller-ett-visst-tecken"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "inspiro"
published: "2006-12-12T21:09:12.000Z"
updated: "2006-12-12T22:43:37.000Z"
replies: 2
views: 558
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/154817-filtrera-bort-rader-som-innehåller-ett-visst-tecken"
---

# Filtrera bort rader som innehåller ett visst tecken

## #1 — inspiro, 2006-12-12T21:09Z

Har en tabell vars innehåll ser ut typ så här:

1
1\.1
1\.2
1\.3
1\.3.1
2
2\.1
2\.2
2\.2.1

osv...

Hur gör man för att hämta ut bara de rader som har hela tal? Jag gör så här:

WHERE (CategoryID NOT LIKE '%.%')

vilket fungerar, men ni har lärt mig tidigare att man inte ska använda procent i början eftersom det är långsamt. Finns det något alternativ?

Fråga 2: Hur skulle man hämta ut alla rader som börjar på exempelvis 2 men som inte har två punkter? Alltså hämta ut 2.1 och 2.2 i mitt exempel?

Permalänk: https://www.webforum.nu/p/154817

## #2 — emission, 2006-12-12T22:18Z

Fråga 1:

Det finns andra sätt, men de kommer alla att lida av att kolumnens data måste läsas, i stället för en snabb titt i ett index, så LIKE-sökningen är helt OK.

Fråga 2:

Djupet på nivån kan beräknas på flera sätt. Enklast är förstås djup=LEN(Fältet)-LEN(REPLACE(Fältet,'.','')). Om du har en DMBS som stöder triggers kan du uppdatera en djup-kolumn automatiskt vid INSERT och UPDATE, och slipper prestandaproblem. Detta kan ju med fördel användas även för Fråga 1.

Permalänk: https://www.webforum.nu/p/1909525

## #3 — tydal, 2006-12-12T22:43Z

Jag skulle rekommendera (eller läs: så gjorde jag själv när jag var i din situation) att du ger varje rad ett id och ett parentID som pekar på det id den hör till. Alltså:

"1" blir id=1 och parentID=0
"1.1" blir id=2 och parentID=1
"1.2" blir id=3 och parentID=1
"1.3" blir id=4 och parentID=1
"1.3.1" blir id=5 och parentID=4
"2" blir id=6 och parentID=0
"2.1" blir id=7 och parentID=6
osv...

I så fall, fråga 1:

SELECT \* FROM tabellen WHERE parentID = 0;

Fråga 2 är lätt om du vet id:t, annars om din databas stödjer nästlade frågor borde det bli (har aldrig använt såna själv) SELECT \* FROM tabellen WHERE parentID = (SELECT id FROM tabellen WHERE kolumn = '2');

Permalänk: https://www.webforum.nu/p/1909527

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/154817-filtrera-bort-rader-som-innehåller-ett-visst-tecken
