Re: Substring
От | Frank Bax |
---|---|
Тема | Re: Substring |
Дата | |
Msg-id | 4AA1E4C9.1000108@sympatico.ca обсуждение исходный текст |
Ответ на | Re: Substring (Raj Mathur <raju@linux-delhi.org>) |
Ответы |
Re: Substring
|
Список | pgsql-sql |
Raj Mathur wrote: > On Saturday 05 Sep 2009, bilal ghayyad wrote: >> I have an sql script function that take one text parameter "funct >> (text)", what I need to do is the following: >> >> If the parameter name is string and its value was for example "abcd" >> then I need to do a query based on ab and then based on the abc, how? >> >> Example: >> >> SELECT * from voipdb where prefix like string >> >> But I need the string to be ab and then to be abc? How I can assign >> the string to the first character and then to the first and second? >> In other words, how can I can take part of the string to do query on >> it? > > From your example the following brute-force method should work (not > tested): > > select * from voipdb where prefix like substring(string from 1 for 2) || > '%' or prefix like substring(string from 1 for 3) || '%'; > > However, I don't understand why you'd want to search for both 'ab' and > 'abc' in the same query, since the first condition is a superset of the > second one. Given that tablename is "voipdb"; I wonder if OP really wants to write a query that finds the row where argument to function matches the most number of leading characters in "prefix". If voipdb table contains: ab, abc, def, defg; then calling function with "abc" or "abcd" returns "abc" and calling function with "defh" returns "def". If this is the real problem to be solved; then brute force is one solution; but I'm left wondering if a single query might return desired result (a single row).
В списке pgsql-sql по дате отправления: