I am trying to get a list of the first character of a character string.
SELECT distinct substr(version,1,1) as COL1 FROM SPHVVERS where Version is not null order by 1
This was working and then failed recently. I think it is because some of the strings now added contain a number as the first character.
I found to get it to work I had to use decode statement. (To_Char did not work )
SELECT distinct decode (substr(version,1,1),'1','?','0','!',substr(version,1,1)) as COL1 FROM SPHVVERS where Version is not null order by 1
oci_result
(PHP 5, PECL OCI8 >= 1.1.0)
oci_result — フェッチした行からフィールドの値を取得する
説明
oci_fetch() によってフェッチされた現在の行のフィールド field からデータを返します。
oci8 ドライバによるデータ型マッピングの 詳細については、ドライバが サポートするデータ型 を参照ください。
パラメータ
- statement
-
- field
-
カラム番号 (1から始まる) またはカラム名 (大文字) のどちらかを使用可能です。
返り値
抽象型 (ROWID, LOB, FILE) を除き、全てを文字列として返します。 エラーの場合、FALSE を返します。
注意
注意: PHP バージョン 5.0.0 以前では、代わりに ociresult() を使用しなければなりません。 まだこの名前を使用することができ、下位互換性のため oci_result() への別名として残されていますが、 推奨されません。
参考
- oci_fetch_array() - 結果データからの次の行を連想配列または配列、またはその両方で返す
- oci_fetch_assoc() - 結果データの次の行を連想配列で返す
- oci_fetch_object() - 結果の次の行をオブジェクトとして返す
- oci_fetch_row() - 結果データの次の行を配列で返す
- oci_fetch_all() - 結果データの全ての行を配列に取得する
oci_result
luismanuelp at gmail dot com
27-Aug-2005 12:05
27-Aug-2005 12:05
gabi at gambita dot de
02-Sep-2003 01:31
02-Sep-2003 01:31
if you want to join two tables having both the same column (e.g. 'id') but you don't want to (or cannot) specify all the other fields in these two tables (like erabbott mentioned), you can use:
SELECT t1.*, t2.*, t1.id AS id1, t2.id AS id2
FROM table1 t1, table2 t2;
Note that this does _not_ work:
SELECT *,t1.id AS id1, t2.id AS id2
FROM table1 t1, table2 t2;
jthome at fcgov dot com
11-Feb-2003 07:56
11-Feb-2003 07:56
FYI--
In order to modify Oracle dates (using NLS_DATE_FORMAT...), you must set $ORACLE_HOME first. This environmental variable is best set in the server startup script (i.e., ./apachectl)
--
Jim
erabbott at NOSPAMterra dot com dot br
27-Sep-2002 11:22
27-Sep-2002 11:22
As in my previous post, the same thing applies when using conversion functions in CLOB columns.
Probably the same thing will occur to any conversion function that you use.
So, this wont work
SELECT ... TO_CHAR(MY_CLOB) ...
$my_clob = OCIResult($stmt,"MY_CLOB");
But this will:
SELECT ... TO_CHAR(MY_CLOB) AS MYC ...
$my_clob = OCIResult($stmt,"MYC");
Best regards.
erabbott at NOSPAMterra dot com dot br
27-Sep-2002 07:35
27-Sep-2002 07:35
Note that if you are making multiple table selects, you must specify an alias to each column.
This wont work:
----------------------------------------
$qry = "SELECT A.COL_ONE, B.COL_ONE FROM TABLE1 A, TABLE2 B";
$stmt = OCIParse($conn, $qry);
while(OCIFetch($stmt))
{
$a = OCIResult($stmt, "A.COL_ONE");
...
----------------------------------------
But this will:
----------------------------------------
$qry = "SELECT A.COL_ONE AS X, B.COL_ONE AS Y FROM TABLE1 A, TABLE2 B";
$stmt = OCIParse($conn, $qry);
while(OCIFetch($stmt))
{
$a = OCIResult($stmt, "X");
...
----------------------------------------
Regards,
steve dot hurst at instem-lss dot co dot uk
29-Mar-2002 12:35
29-Mar-2002 12:35
I am trying to get a list of the first character of a character string.
SELECT distinct substr(version,1,1) as COL1 FROM SPHVVERS where Version is not null order by 1
This was working and then failed recently. I think it is because some of the strings now added contain a number as the first character.
I found to get it to work I had to use decode statement. (To_Char did not work )
SELECT distinct decode (substr(version,1,1),'1','?','0','!',substr(version,1,1)) as COL1 FROM SPHVVERS where Version is not null order by 1
dwilson at cae dot wisc dot edu
17-Apr-2001 10:05
17-Apr-2001 10:05
I complained that I couldn't get the time from an Oracle date field. Joe Brown said:
This is not a PHP bug.
Consider setting NLS_DATE_FORMAT.
The manual states OCIResult() returns everything as a string.
NLS_DATE_FORMAT may not be appropriate for your needs.
There are quite a few places you can set NLS_DATE_FORMAT.
* Environment variables (or windows registry on win32)
* orclSID.ora
* on a per session basis; execute this statement after logon:
$cursor=OCIParse($connection,
"ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
OCIExecute($cursor);
OCIFreeCursor($cursor);
shayman at quiver dot com
31-Aug-2000 01:09
31-Aug-2000 01:09
As this function gets a 'mixed' variable type for the column index, you may use an integer to represent the column number. In this case, the count is starting from 1 and not from zero.
I am not sure, but I think this method is a bit faster than using the column name.
For an example, see the OCINumCols first example.
Maxwell_Smart at ThePentagon dot com
19-Aug-2000 08:49
19-Aug-2000 08:49
On the column names needing to be all caps. Just a guess.
Oracle is case sensitive when columns are created with quotes around them. When they are created without quotes around them, they are case insensitive. However, Oracle will always display them as being all caps.
If PHP referes to a column, it probably gets the case from Oracle. Then since PHP is case sensitive, you have ot supply it in all caps.
dominic dot standage at revolutionltd dot com
16-Sep-1999 09:43
16-Sep-1999 09:43
OCIResult() requires the column name to be written in capitals, so OCIResult($stmt,"column") won't work, but OCIResult($stmt,"COLUMN") works fine. Hope that helps somebody out
