---
title: "Plocka bort allt som inte är numeriskt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/172227-plocka-bort-allt-som-inte-är-numeriskt"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "devotion"
published: "2008-06-16T18:19:20.000Z"
updated: "2008-10-25T10:56:37.000Z"
replies: 17
views: 1006
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/172227-plocka-bort-allt-som-inte-är-numeriskt"
---

# Plocka bort allt som inte är numeriskt

## #1 — devotion, 2008-06-16T18:19Z

Hej!

Kan man i SQL.server göra om en sträng som ser ut så här:

```
Avtal wee 450
```

till bara

```
450
```

Mvh
Henrik

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

## #2 — Peter S, 2008-06-16T18:26Z

I en SELECT utan några krusiduller? Tveksamt. Det blir nog till att skapa en UDF.

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

## #3 — devotion, 2008-07-01T09:15Z

Hur skulle en sådan UDF se ut? :)  

Mvh Henrik

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

## #4 — Fredde Mannen, 2008-07-01T09:27Z

Vet inte om SQL server stödjer regexp, men man kan ju skriva udf:er i ex. .NET som man sedan kan använda sig av. 

alternativt kan man ju kanske, om man vet hur strängen kommer att se ut, ex. ser den alltid ut ex: Avtal wee 12313, dvs 2 mellanslag och två stringar och en int typ.. 

så kan man kanske splita mellanslagen, och ta sista värdet i den splitade strängen, annars kan ju kolla upp .net i samband med UDF i Sql server, ex: <http://www.eggheadcafe.com/articles/sql_server_2005_clr_regex.asp>

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

## #5 — devotion, 2008-07-01T09:30Z

> **Fredde Mannen skrev:**
>
> Vet inte om SQL server stödjer regexp, men man kan ju skriva udf:er i ex. .NET som man sedan kan använda sig av. 
> 
> alternativt kan man ju kanske, om man vet hur strängen kommer att se ut, ex. ser den alltid ut ex: Avtal wee 12313, dvs 2 mellanslag och två stringar och en int typ.. 
> 
> så kan man kanske splita mellanslagen, och ta sista värdet i den splitade strängen, annars kan ju kolla upp .net i samband med UDF i Sql server, ex: <http://www.eggheadcafe.com/articles/sql_server_2005_clr_regex.asp>

Det bästa hade ju varit en regexp, eftersom det inte finns något givet mönster i strängen, förutom att jag vill få ut det numeriska värdet... :)  

Får fundera lite på det.

Mvh
Henrik

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

## #6 — devotion, 2008-07-01T09:38Z

Skulle man kunna göra det i Excel? Datat kommer ju därifrån....  :)

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

## #7 — Fredde Mannen, 2008-07-01T09:49Z

> **devotion skrev:**
>
> Skulle man kunna göra det i Excel? Datat kommer ju därifrån....  :)

<http://www.tanguay.info/web/codeExample.php?id=908>
<http://www.vbaexpress.com/kb/getarticle.php?kb_id=68>

Man bör kunna göra en regexp i Excell så.. :) Man kan ju alltid pröva..

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

## #8 — SPiN, 2008-07-01T10:15Z

Du kan ju alltid skapa en funktion;
<http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2313798&SiteID=17>
eller:
<http://xpscodes.com/2008/04/15/remove-strip-characters-from-alphanumeric-data>

SQL Server stödjer reguljära uttryck, men om man kan använda den på utplockade fält och inte bara på jämförelser får du fråga någon annan. ;)

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

## #9 — devotion, 2008-07-01T13:06Z

Hej igen!

Jag tittade lite mer på denna:

```
Create FUNCTION [dbo].[ufnFormatContractNumber](
@contractno varchar(20)
)
RETURNS varchar(20)
AS
BEGIN
Return (Select SUBSTRING(@contractno, n, 1)
from (SELECT number n FROM master.dbo.spt_values
WHERE type = 'p'
AND number BETWEEN 1 AND len(@contractno)
) AS Nums
where SUBSTRING(@contractno, n, 1) like '[0-9]'
for xml path(''))
END;
```

men vet inte riktigt hur jag ska tillämpa den...

Tabellen heter tblCustomer och fältet heter Custom2

Mvh
Henrik

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

## #10 — Fredde Mannen, 2008-07-01T13:22Z

om nu funktionen är skapad, anropas den på föjande sätt 

```
dbo.ufnFormatContractNumber(...)
```

 

hur hade du tänkt att den skall användas.. vad är syftet mer än just få ut siffrorna.

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

## #11 — devotion, 2008-07-01T14:15Z

Jag har en sträng som innehåller tex

> 123 on call

123 är ett avtalsnummer och "on call"  är avtalstypen

Jag vill därför lyfta ut detta och lägga i ett annat fält; Custom4

Mvh
Henrik
  :)

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

## #12 — devotion, 2008-07-02T12:59Z

Löste det med Vb-script och regexp,,, :)  

Mvh
Henrik

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

## #13 — Choronzon, 2008-10-24T01:25Z

> **devotion skrev:**
>
> Löste det med Vb-script och regexp,,, :)  
> 
> Mvh
> Henrik

Hur? :) behöver samma sak ungefär

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

## #14 — devotion, 2008-10-24T14:22Z

Så här:

```
'
Option explicit
'
Sub main()

	dim Conn, sSQL, Rs
	dim sString, sContractNr, lId

	'Öppna databasen
	Set Conn=CreateObject("ADODB.Connection")
	Conn.Open Application.sDbConnectionString
	
	Set Rs=CreateObject("ADODB.Recordset")
	
	'SQL-fråga
	sSQL= "SELECT tblCustomer.Custom2, tblCustomer.[Id]" _
		& " FROM [tblCustomer]"

	Rs.Open sSQL, Conn
	
	while not rs.EOF
	
		sString = Rs("Custom2")
		sContractNr = GetContractNr(sString)
		lId = Rs("Id")

		sSQL= "UPDATE [tblCustomer] SET [Modified] = GetDate(), [Custom4] = '" & sContractNr & "' WHERE [Id] = " & lId & ""
		Conn.Execute sSQL
		rs.MoveNext
	wend
	
	msgBox "Klart"
	
	Rs.Close
	Set Rs=Nothing
	Set Conn=Nothing

	Call Refresh()
	
End sub

'Funktion för att hämta kontraktsnummer
Function GetContractNr(str)
	with new regExp
		.pattern = "[^\d]+"
		.IgnoreCase = True
		.Global = True
		GetContractNr = .Replace(str, "")
	End With

End Function
```

Mvh
henrik

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

## #15 — überfuzz, 2008-10-24T17:10Z

OT: Jag blev nyfiken på tabellstrukturen, var har du: Avtal wee 450

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

## #16 — devotion, 2008-10-24T19:52Z

> **überfuzz skrev:**
>
> OT: Jag blev nyfiken på tabellstrukturen, var har du: Avtal wee 450

Just den strängen var bara ett exempel,

Tanken var att ta bort allt som inte var ett numeriskt tal.

Dvs spara 450 i exemplet.

 :)

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

## #17 — überfuzz, 2008-10-25T10:42Z

Jag frågade mest för att jag inte förstod i vilket sammanhang man har siffror i en sträng när man behöver siffrorna som siffror. Alltså, att någon sparar VOLVO 142 DL i en databas kan jag förstå, men det du frågade efter gjorde mig förbryllad.

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

## #18 — Choronzon, 2008-10-25T10:56Z

ja, nu var det ju regexp jag var intresserad av i exemplet då, det var det jag citerade :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/172227-plocka-bort-allt-som-inte-är-numeriskt
