Jump to content
php.lv forumi

MSSQL un mīkstie burti


Qued

Recommended Posts

Moš kāds zina, kā MSSQL apstrādā character? Te uzpeldēja interesanta problēma, ka, piemēram, ja meklē

like '%liga%'

tad atrod visas Līgas. To jesķ, ignorē garo burtu.

Abet ja meklē

like '%jelena%

tad nevienu Jeļenu neatrod, lai gan datubāzē tādas ir.

Wtf, kā to var mainīt?

Link to comment
Share on other sites

Ko tieši tu gribi mainīt ? Lai meklē vienmēr precīzi vai arī lai meklē vienmēr uz līdzībām ?

 

Ja gribi, lai vienmēr atrod gan 'Ļ', gan 'L' tad var uztaisīt speciālu procedūru/fja MSSQL pusē, kas veic speciālo simbolu konvertēšanu uz ascii.

 

Un pēc tam sql būtu šāds aptuveni (neesmu pāliecināts vai tieši šāds strādās):

...WHERE lv_to_en(lauks) LIKE lv_to_en('%Jeļena%')...

Link to comment
Share on other sites

Ko tieši tu gribi mainīt ? Lai meklē vienmēr precīzi vai arī lai meklē vienmēr uz līdzībām ?

Es kā reiz gribu, lai meklē tieši to, ko viņam uzdod meklēt. Ja uzdodu meklēt like '%liga%', tad lai meklē Ligas, nevis Līgas.

Link to comment
Share on other sites

Izmanto PostgreSQL. Nekad nav bijis tāda veida problēmu ar Postgri. Tam UTF-8 ir jau no izseniem laikiem. =)

Šas, visu pametīšu un pāriešu uz PostgreSQL.

 

Qued, nu tad varbūt tev ir eneiblots kautkāda veida fuzzy match vai kas tāds ?

what? Kas tas ir? Nekas speciāli nav eneiblots vai diseiblots. Imo, kaut kāda figņa ir ar čarsetiem, bet kāda? Pie tam garos burtus ignorē, bet mīkstos ņem vērā.

Edited by Qued
Link to comment
Share on other sites

Tu pat nepieminēji kādu charset tu izmanto.

 

Šas, visu pametīšu un pāriešu uz PostgreSQL.
Malacis! =)

 

Bet ja nopietni, es domāju, ka nomainīt datubāzi nav lielas problēmas. Ja php normāli uzrakstīts, protams (normāli == ne caut mysql_ funkcijām, bet caur klasēm).

Edited by GedroX
Link to comment
Share on other sites

goldy => iekš PostgreSQL problēmu nebūs! =D

 

P.S. Esmu sākumā ņēmies ar MySQL. Kad sākās ņemšanās ar Postgri, sākumā es to ciest nevarēju, bet ātri vien sapratu, ka Postgre RULLZZ DA WORLD!

Edited by GedroX
Link to comment
Share on other sites

Btw tas tiek darīts no PHP un caur kādu clientu? FreeTDS?

 

Vai konkrētais kverijs analogi izpildās arī piemēram no MS Enterprise sql managera?

 

Var paprovēt iekš freetds.conf pie konkrēta servera pielikt:

client charset = UTF-8

 

 

 

P.S. Esmu sākumā ņēmies ar MySQL.
Nejauc MS SQL ar MySQL :)
Link to comment
Share on other sites

Šas, visu pametīšu un pāriešu uz PostgreSQL.

 

Vecais, nepadodies! Izkod šito problēmu līdz saknei, savādāk, kad radīsies problēma ar postgri (kas notiks ļoti ātri) atkal bēgsi uz citu DB?!?! Tādā veidā var aptrūkties DBVS :D

Link to comment
Share on other sites

Btw tas tiek darīts no PHP un caur kādu clientu? FreeTDS?

 

Vai konkrētais kverijs analogi izpildās arī piemēram no MS Enterprise sql managera?

Analogi izpildās arī no Query Analyzer'a. Profilerī rādās tāpat kā ievadīts.

Mysqlā koļēgam bija ļoti līdzīga problēma, tur šis uztaisīja workaround'u sqlā konvertējot stringiem čarsetu uz cp1257_bin vai kaut kā tamlīdzīgi.

 

Vecais, nepadodies

Kamōn, es tak pajokoju par to postgresql. Man te mssqls visam pasākumam dzimtā vide :)

Edited by Qued
Link to comment
Share on other sites

Moš kāds zina, kā MSSQL apstrādā character? Te uzpeldēja interesanta problēma, ka, piemēram, ja meklē like '%liga%' tad atrod visas Līgas. To jesķ, ignorē garo burtu. Abet ja meklē like '%jelena% tad nevienu Jeļenu neatrod, lai gan datubāzē tādas ir.
Man tāda pati problēma. Lietoju visur UTF8 kodējumu, un dažus latviešu burtus MySQL atšķir no parastajiem, bet dažus nē... Problēmu neesmu vēl atrisinājis, jo iestāstīju klientam, ka tā ir mana projekta fīča nevis bugs :)))
Link to comment
Share on other sites

×
×
  • Create New...