Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024

Intrerupator cu N - doza doar cu ...
 Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...
 

SQL server - nvarchar - caractere nerecunoscute ș Ș ț T

- - - - -
  • Please log in to reply
23 replies to this topic

#1
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011
Daca poate cineva sa ma ajute, sunt cam noob in tsql, exista vreo solutie pentru putea găsi la cautare caracterele Ș ș Ț ț ?

atasez un mic exemplu care descrie mai bine ce caut:
====================================

/*rulati query-ul de 2 ori, prima data pina la semn, a doua oara full*/
/*in parametrul @nstring se pot testa diverse caractere. Eu le-am pus pe cele care dau probleme diverse.*/
/*iar in parametrul i se introduce un caracter cu diacritice pentru a vedea ce returneaza cautarea in coloana respectiva*/
/*se va putea vedea ca Ș ș Ț ț se returneaza toate la cautarea unuia dintre ele, deoarece in fapt query-ul returneaza toate
rezultatele care convertite dau la fel: Ș = � ; ș = � ; Ț = � ; si ț = �;  iar � = unicode unknown character*/
DECLARE @nstring NVARCHAR(100)
DECLARE @position int
DECLARE @i nvarchar(1)
SET @nstring = N'ȘșȚțSsTtĂăÎîAaIi�'
SET @position = 1
SET @i =NCHAR(65533) --puteti incerca toate valorile pe care vi le da tabelul la prima executie
DECLARE @CharList TABLE (
Position INT,
UnicodeChar NVARCHAR(1),
UnicodeValue  INT
)
--de remarcat ca datalenght vede dublu numarul de caractere
WHILE @position <= DATALENGTH(@nstring)
   BEGIN
   INSERT @CharList
   SELECT @position as Position
  , CONVERT(nchar(1), SUBSTRING(@nstring, @position, 1)) as UnicodeChar
  , UNICODE(SUBSTRING(@nstring, @position, 1)) as UnicodeValue
   SET @position = @position + 1
   END
SELECT * FROM @CharList
--executati query-ul prima data doar pina aici
where UnicodeChar like @i
--dupa care executati full
--print nchar(65533)
==============================

#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003

View Postsorin503, on 31 august 2014 - 12:10, said:

--de remarcat ca datalenght vede dublu numarul de caractere
WHILE @position <= DATALENGTH(@nstring)
De remarcat faptul ca folosesti o functie si nu stii ce face.

#3
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 12:28, said:

De remarcat faptul ca folosesti o functie si nu stii ce face.

Pai, spune-mi tu. Sunt deschis la noi cunostinte.

Oricum, ea e acolo doar pentru ca sa dea un numar de rinduri, dilema principala din exemplul pe care l-am dat e cea cu cautarea dupa caracterele alea.
Aceeasi cautare da rezultate corecte daca se cauta ĂăÎî etc...
Doar Ș ș Ț ț sunt problema

View Postneagu_laurentiu, on 31 august 2014 - 12:28, said:

De remarcat faptul ca folosesti o functie si nu stii ce face.
/*rulati query-ul de 2 ori, prima data pina la semn, a doua oara full*/
/*in parametrul @nstring se pot testa diverse caractere. Eu le-am pus pe cele care dau probleme diverse.*/
/*iar in parametrul i se introduce un caracter cu diacritice pentru a vedea ce returneaza cautarea in coloana respectiva*/
/*se va putea vedea ca Ș ș Ț ț se returneaza toate la cautarea unuia dintre ele, deoarece in fapt query-ul returneaza toate
rezultatele care convertite dau la fel: Ș = � ; ș = � ; Ț = � ; si ț = �;  iar � = unicode unknown character*/
DECLARE @nstring NVARCHAR(100)
DECLARE @position int
DECLARE @i nvarchar(1)
SET @nstring = N'ȘșȚțSsTtĂăÎîAaIi�'
SET @position = 1
SET @i =NCHAR(65533) --puteti incerca toate valorile pe care vi le da tabelul la prima executie
DECLARE @CharList TABLE (
Position INT,
UnicodeChar NVARCHAR(1),
UnicodeValue  INT
)
WHILE @position <= len(@nstring)
   BEGIN
   INSERT @CharList
   SELECT @position as Position
	  , CONVERT(nchar(1), SUBSTRING(@nstring, @position, 1)) as UnicodeChar
	  , UNICODE(SUBSTRING(@nstring, @position, 1)) as UnicodeValue
   SET @position = @position + 1
   END
SELECT * FROM @CharList
--executati query-ul prima data doar pina aici
where UnicodeChar like @i
--dupa care executati full
--print nchar(65533)


multumit?

#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Vezi daca citesti documentatia, ajuta. Tot asa citeste si despre COLLATE si pune caracterele in cauza bine. Si totul va decurge cum te astepti.

Edited by neagu_laurentiu, 31 August 2014 - 13:13.


#5
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 13:13, said:

Vezi daca citesti documentatia, ajuta. Tot asa citeste si despre COLLATE si pune caracterele in cauza bine. Si totul va decurge cum te astepti.

La fel de bine puteai sa ma trimiti sa caut pe net...

Numai ca eu tot caut pe net de citeva zile bune, si n-am gasit nimic care sa rezolve problema. Romanii sunt cam slabuți la capitolul baze de date, iar strainii nu-și bat capul cu litera ș...

Collate nu are nicio treaba cu ce zic eu. Nvarchar stocheaza caractere unicode, pentru asta a fost introdus, si o face foarte bine. In tabele am caracterele afisate perfect, doar ca nu stie sa caute cum trebuie: cauți șarpe si îți găasește arpe....

#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Tu vinzi castraveti la gradinar ?!
Ia pune Collation pe baza sub care executi codul pe Romanian_100_CS_AS. Cum merge ?

View Postsorin503, on 31 august 2014 - 13:21, said:

Romanii sunt cam slabuți la capitolul baze de date
Esti si in masura sa faci calificari...

Edited by neagu_laurentiu, 31 August 2014 - 13:41.


#7
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 13:41, said:

Tu vinzi castraveti la gradinar ?!
Ia pune Collation pe baza sub care executi codul pe Romanian_100_CS_AS. Cum merge ?


Esti si in masura sa faci calificari...

Mersi mult gradinare, nu puteai sa zici asta din prima? Posted Image

#8
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Nu. Nu te ajuta cu nimic ca ti-am spus direct (mi-am incalcat un principiu). Maine ai uitat iar cand ai o alta problema iar o sa astepti. Scopul forumului e sa te puna pe directie dar tu sa descoperi si sa-ti ramana pe viata. Exact ca in povestea cu pescuitul si furnizatul de peste.

Edited by neagu_laurentiu, 31 August 2014 - 13:51.


#9
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 13:41, said:

Tu vinzi castraveti la gradinar ?!
Ia pune Collation pe baza sub care executi codul pe Romanian_100_CS_AS. Cum merge ?


Esti si in masura sa faci calificari...

Sunt noob in tsql, dar asta nu inseamna ca sunt cretin....

Romaniii sunt slabi la capitolul baze de date, altfel as fi gasit tone de documentatii pe site-uri romanesti.

E drept, ca si mentalitatea asta a romanului e de vina, sa moara si capra vecinului... ca probabil si tu cind ai invatat cite ceva nu te-a ajutat nimeni, si atunci de ce sa ajuti pe altii ?

Intimplarea face ca eu chiar am rascolit vreo 100 de site-uri ca sa gasesc despre Colate, si as putea sa pun pariu ca tu n-ai putea sa-mi indici un site care sa-mi arate concret ca pentru problema care o aveam eu era necesar strict colate Romanian_100_cs_as.
Ori in ssms ai vazut cite colate cu care lucreaza caracterele romanesti sunt acolo... vreo 80... si ca sa vezi ca nu eram chiar nedocumentat cu privire la colate, colatia mea era Romanian_cs_as... Inainte de colatia asta testasem cel putin 10 variante de colatie, niciuna nu era buna.

Oricum, sa fi convins ca daca gaseam macar o frintura de documentatie cu privire la colatia romaneasca pe site-urile straine... nu ajungeam aici. Ma feresc ca de dracu sa cer ajutor de la romani, pentru ca e o regula pe care poti s-o studiezi daca vrei (pe oricare forum romanesc), regula conform careia majoritatea celor care-si dau cu parerea nu stiu nimic, iar cei care stiu abia asteapta sa-i intrebi ceva ca inceapa sa te ia cu rasini, si aere, si fandoseli... De-asta e tara asta in halul in care e...

#10
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003

View Postsorin503, on 31 august 2014 - 17:31, said:

dar asta nu inseamna ca sunt cretin....
N-am spus asta niciodata.

View Postsorin503, on 31 august 2014 - 17:31, said:

Romaniii sunt slabi la capitolul baze de date, altfel as fi gasit tone de documentatii pe site-uri romanesti.
Limba romana nu e in centrul universului IT.

View Postsorin503, on 31 august 2014 - 17:31, said:

E drept, ca si mentalitatea asta a romanului e de vina, sa moara si capra vecinului... ca probabil si tu cind ai invatat cite ceva nu te-a ajutat nimeni, si atunci de ce sa ajuti pe altii ?
Nu e nici o mentalitate, cand am invatat si eu tot asa saream in sus ca tine ca de ce nu-mi da rezolvarea ! Pe urma i-am apreciat pe cei care mi-au dat indicatii si mi-au pus astfel meseria-n mana cum se spune.

View Postsorin503, on 31 august 2014 - 17:31, said:

as putea sa pun pariu ca tu n-ai putea sa-mi indici un site care sa-mi arate concret ca pentru problema care o aveam eu
Nu mai pune nimic si citeste in MSDN, eu tot din documentatia oficiala am invatat (doar nu din Cartea Cartilor). Da' na, romanii sunt "rasini, au aere si fandoseli."

View Postsorin503, on 31 august 2014 - 17:31, said:

De-asta e tara asta in halul in care e...
Nu de aia ci pentru ca facem lucrurile de mantuiala.

#11
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 13:50, said:

Nu. Nu te ajuta cu nimic ca ti-am spus direct (mi-am incalcat un principiu). Maine ai uitat iar cand ai o alta problema iar o sa astepti. Scopul forumului e sa te puna pe directie dar tu sa descoperi si sa-ti ramana pe viata. Exact ca in povestea cu pescuitul si furnizatul de peste.

si inca ceva...

Ai un principiu foarte gresit. In primul rind ca a invata pe cineva sa pescuiasca e cu totul si cu totul altceva decit a-i spune ca pe-aici pe undeva e o balta... A invata pe cineva sa pescuiasca inseamna sa-i arati niste secrete fara de care ar sta degeaba pe malul lacului si s-ar tot mira de ce nu prinde peste. Niciun manual de pescuit nu te poate face sa prinzi peste fara micile secrete. Ca sa poti zice ca ai dreptate ar trebui sa ma inveti toate tainele tsql-ului, dupa care sa astepti rezultate de la mine: respectiv sa scriu programe care sa aiba succes.

In al doilea rind, tu nu ai de unde sti ca eu miine o sa uit ce mi-ai aratat. Am citit la documentatie de ma dor ochii, si n-am gasit nicaieri ce mi-ai zis tu. Daca crezi ca ma poti contrazice aici... te rog sa-mi dai un link cu explicatia concreta (generalitati stiam si eu, stiam ca  _CS_AS se refera la caracter sensitive, si accent sensitive, si evident ca variantele astea le-am testat). Deci daca astept ceva concret, ma refer ca astept ceva documentatie care sa-mi explice de ce merge collate romanian_100_cs_as , si de ce nu merg celelalte.

In al treilea rind, cind cineva pune o intrebare pe un forum tu nu ai de unde sa sti cit de important este pentru el raspunsul. Cheia trebuie sa fie in dezbatere, discutii, pentru asta se numeste forum. Ori daca tu presupui ca-i dai un fragment de informatie dupa care el o sa stie sa foloseasca, sau o sa aiba rabdare sau nevoie sa cerceteze te inseli amarnic. Forumurile si blogurile cele mai bune sunt cele in care pe o problema se despica firul in 4 pina intelege toata lumea, pentru ca raspunsurile sunt indexate in google, si poate ajungi sa dai de o chestie delicata si foarte concreta pe un forum cautind de fapt niste termeni care n-ar mai fi fost gasiti daca discutia murea in fasa...

View Postneagu_laurentiu, on 31 august 2014 - 17:52, said:

Nu mai pune nimic si citeste in MSDN,

citesc si in MSDN... dar asta n-am gasit.

Domeniul asta e IMENS, de regula studiez organizat, dar sunt cazuri cind am de rezolvat ceva concret si mi-e lehamite sa intru in msdn pentru fiecare fleac. Plus ca acolo sunt chestiuni principiale, nu totdeauna gasesti informatie pentru cazuri particulare ca asta. Daca eram indian sau iranian... gaseam, ei au alt mod de gindire, au tutoriale pentru toate fleacurile.

#12
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai e arhicunoscut ce inseamna codul de pagina 1250 sau ca avem SQL/Windows Collate iar gruparile iar sunt pe net la un click distanta, cum SQL Server tine cont de acestea la sortari, cautari si ce mai intra in poveste. Stiu, nu e ce vrei tu.

http://msdn.microsof...y/ms188046.aspx
http://collation-cha...nian_CI_AI.html

#13
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 18:31, said:

Pai e arhicunoscut ce inseamna codul de pagina 1250 sau ca avem SQL/Windows Collate iar gruparile iar sunt pe net la un click distanta, cum SQL Server tine cont de acestea la sortari, cautari si ce mai intra in poveste. Stiu, nu e ce vrei tu.

http://msdn.microsof...y/ms188046.aspx
http://collation-cha...nian_CI_AI.html

pai crede-ma ca am citit de era s-o iau pe cimp....

uite, tot un site informativ, si tot nu gasesti informatia exacta:

http://www.fileforma.../0218/index.htm

#14
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai vezi ca e o diferenta intre Ș si Ş (U+015E).

Edited by neagu_laurentiu, 31 August 2014 - 18:47.


#15
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 18:31, said:

Stiu, nu e ce vrei tu.


http://collation-cha...nian_CI_AI.html

da, asta are s cu sedilă, pentru asta mi-am pierdut o zi intreaga... pina sa-mi dau seama ca exista un tip diferit de Ș ...

Am facut tot felul de incercari sa-mi dau seama de ce nu gasea nimic pe colatia aia, cautam Șarpe si imi gasea arpe... cu toate ca ceream fara % in fata... Ș-ul pur si simplu nu-l lua in considerare. E o deruta totala colatia aia...

#16
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai ai documentat codul de pagia 1250 care e mapat in Romanian_CI_AI si care-i diferit de versiunea BIN ori _100_
http://msdn.microsof...y/cc195052.aspx

#17
sorin503

sorin503

    New Member

  • Grup: Members
  • Posts: 16
  • Înscris: 16.11.2011

View Postneagu_laurentiu, on 31 august 2014 - 18:56, said:

Pai ai documentat codul de pagia 1250 care e mapat in Romanian_CI_AI si care-i diferit de versiunea BIN ori _100_
http://msdn.microsof...y/cc195052.aspx

pai da, dar tu crezi ca eu cind am vazut ca e un Ș acolo aveam de unde stiu ca mai exista un alt fel de Ș ? (si mai ales ca Ș-ul cu sedila e doar un surogat de Ș ?)

Eu incerc sa lucrez pastrind compatibilitatea cu utf-8 ca sa nu patesc ca astia:
http://beginner-sql-....com/ro/sql.htm

(apropo de experti romani, site copy-paste-google-translate Posted Image  )

In fine, ceea ce trebuie sa fac e un fel de adaptor (functie de adaptare a caracterelor), prin care indiferent cum vin caracterele inspre baza de date sa le converteasca intr-un singur mod, iar atunci cind se cauta dupa tot felul de caricaturi de caractere sa fie mai intii convertite la acel mod si abia dupa aia sa faca cautarea...

Acuma la faza asta, daca gaseam pe undeva ceva facut de-a gata... nu mai pierdeam timpul, dar asa... o sa trebuiasca sa-mi storc creierii si sa-mi rup ochii

#18
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003

View Postsorin503, on 31 august 2014 - 19:18, said:

pai da, dar tu crezi ca eu cind am vazut ca e un Ș acolo aveam de unde stiu ca mai exista un alt fel de Ș ? (si mai ales ca Ș-ul cu sedila e doar un surogat de Ș ?)
Trebuia de curiozitate sa tragi un ochi prin setul de caractere. Apoi tine si de o experienta de programare Windows / WinAPI (nu SQL) unde iar sunt prezentate aspectele ce tin de codul de pagina si altele asemenea.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate