Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MsSql 2005 -Jak podzielić string na kilka fragmentów wd wzorca
stachuf11
post 18.08.2009, 07:58:15
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

Ostrzeżenie: (0%)
-----


witam
jest zmienna

  1. SET @zm='c:\kat1\kat2\kat3\plik.1250'



chcę z tej zmiennej wyciągnąc nazwę pliku bez rozszerzenia tylko samo 'plik', jak to osiągnąć w sqlu ?
pozdrawiam
Stachu

Ten post edytował stachuf11 18.08.2009, 08:25:11
Go to the top of the page
+Quote Post
Mad_John
post 19.08.2009, 11:27:07
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 8.09.2006

Ostrzeżenie: (0%)
-----


Znalazłem taki kawałek kodu do parsowania, może się przyda

  1.  
  2. --declare the list of Cities
  3. DECLARE @CityList varchar(8000)
  4. SET @CityList = 'Milwaukee|Chicago|New York|Seattle|San Francisco'
  5.  
  6. --declare the delimeter between each City
  7. DECLARE @Delimeter char(1)
  8. SET @Delimeter = '|'
  9.  
  10. --Parse the string and insert each city into the @tblCity table
  11. DECLARE @tblCity TABLE(City varchar(50))
  12. DECLARE @City varchar(50)
  13. DECLARE @StartPos int, @Length int
  14. WHILE LEN(@CityList) > 0
  15. BEGIN
  16. SET @StartPos = CHARINDEX(@Delimeter, @CityList)
  17. IF @StartPos < 0 SET @StartPos = 0
  18. SET @Length = LEN(@CityList) - @StartPos - 1
  19. IF @Length < 0 SET @Length = 0
  20. IF @StartPos > 0
  21. BEGIN
  22. SET @City = SUBSTRING(@CityList, 1, @StartPos - 1)
  23. SET @CityList = SUBSTRING(@CityList, @StartPos + 1, LEN(@CityList) - @StartPos)
  24. END
  25. ELSE
  26. BEGIN
  27. SET @City = @CityList
  28. SET @CityList = ''
  29. END
  30. INSERT @tblCity (City) VALUES(@City)
  31. END
  32.  
  33. --Show all Cities in the @tblCity table
  34. SELECT * FROM @tblCity



Proponuje zrobić pętlę i wyznaczyć ostatnią pozycję slasha, później od tej pozycji użyć funkcji RIGHT (dostaniemy nazwę pliku z rozszerzeniem). Można zrobić to samo, żeby znaleźć pozycję kropki i użyć funkcji LEFT(). Przypuszczam, że da się zrobić prościej ale nic innego mi do głowy nie przyszło...
Go to the top of the page
+Quote Post
erix
post 19.08.2009, 11:34:38
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A po co tak?

PATINDEX + SUBSTRING


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
stachuf11
post 19.08.2009, 18:17:19
Post #4





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

Ostrzeżenie: (0%)
-----


dziekuję serdecznie za pomoc
myślałem że jest jakas gotowa funkcja jak np w php explode, ale widać ze nie ma, trzeba troszkę kombinowac
pozdrawiam
Stachu
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 13:15