Jump to content
php.lv forumi

Recommended Posts

Posted

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?

Posted

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%')...

Posted
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.

Posted (edited)
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
Posted (edited)

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
Posted

GedroX -> tev viss OK, tu kaut izlasi precīzi ko cilvēks lieto un tad fantazē, un ja ar PostgreSQL radīsies kāda problēma, ko tad, pāriet uz ORACLE vai DB2?

Posted (edited)

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
Posted

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 :)
Posted
Š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

Posted (edited)
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
Posted
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 :)))
Posted

MySQL var mēģināt lietot ..LIKE BINARY.. vienkāršā LIKE vietā. Nezinu, vai tāds paņēmiens eksistē iekš MsSQL. Vienīgais cons ir tāds, ka meklēšana kļūs case sensitive. Nāksies visus tekstus pārveidot uz mazajiem burtiem.

×
×
  • Create New...