全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1981
推到 Plurk!
推到 Facebook!

SQL 語法 Like 的使用

尚未結案
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-10 09:26:52 IP:211.22.xxx.xxx 未訂閱
若我想在某欄位格式如 Y091A01001 第二個到第四個字 091 代表民國 91 年 要刪除所有民國 91 年的資料 我的 SQL 語法如下 'delete from PC_BS where PC_paper_num like ' '_' char(39) str char(39) '%' str 是一個字串變數, 我 assign '091' 這個字串給它 執行後出現 Unable to locate name '_' to catelog 請問我的語法錯了嗎 ? thanks !
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-10 09:36:01 IP:211.74.xxx.xxx 未訂閱
二個問題.. 1.Database是?? 2.第一碼Y是固定或者會變動??
引言: 若我想在某欄位格式如 Y091A01001 第二個到第四個字 091 代表民國 91 年 要刪除所有民國 91 年的資料 我的 SQL 語法如下 'delete from PC_BS where PC_paper_num like ' '_' char(39) str char(39) '%' str 是一個字串變數, 我 assign '091' 這個字串給它 執行後出現 Unable to locate name '_' to catelog 請問我的語法錯了嗎 ? thanks !
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-10 09:42:52 IP:211.22.xxx.xxx 未訂閱
1. Database 是 PostgreSQL 2. 第一碼是會變動的 thanks!!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-10 09:43:11 IP:211.74.xxx.xxx 未訂閱
我手邊沒有PostgreSQL.. Database:MSSQL.. 'delete from PC_BS where substring(PC_paper_num,2,3)=' #39 str #39; TRY TRY SEE..有問題在POST..
引言: 若我想在某欄位格式如 Y091A01001 第二個到第四個字 091 代表民國 91 年 要刪除所有民國 91 年的資料 我的 SQL 語法如下 'delete from PC_BS where PC_paper_num like ' '_' char(39) str char(39) '%' str 是一個字串變數, 我 assign '091' 這個字串給它 執行後出現 Unable to locate name '_' to catelog 請問我的語法錯了嗎 ? thanks !
發表人 - chih 於 2003/01/10 09:44:38
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-10 09:48:23 IP:61.219.xxx.xxx 未訂閱
引言: 若我想在某欄位格式如 Y091A01001 第二個到第四個字 091 代表民國 91 年 要刪除所有民國 91 年的資料 我的 SQL 語法如下 'delete from PC_BS where PC_paper_num like ' char(39) '_' str '%' char(39) str 是一個字串變數, 我 assign '091' 這個字串給它 執行後出現 Unable to locate name '_' to catelog 請問我的語法錯了嗎 ? thanks !
/* 使用中文很辛苦,中華男兒當自強 */
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-10 09:51:57 IP:211.22.xxx.xxx 未訂閱
這樣會出現 error creating cursor handle 耶 !!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-01-10 09:54:37 IP:211.74.xxx.xxx 未訂閱
我不知道PostgreSQL有沒有支援SUBSTRING的語法.. 你試看看能不能SELECT出資料.. 如果可以..那我上面POST的語法就沒有錯誤了... TRY TRY SEE..
引言: 這樣會出現 error creating cursor handle 耶 !!
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-01-10 10:17:51 IP:211.22.xxx.xxx 未訂閱
PostgreSQL 的確有支援這個語法 我用 select 可以 select 出資料 但用 delete 卻會出現 error creating cursor handle (select 就不會) 但之後再去看 Database 中的資料的確有被刪除 請問為什麼會有這個 error message 呢 ?? thanks !
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-01-10 10:19:33 IP:211.74.xxx.xxx 未訂閱
那你可能要把delete前後附近的Code POST上來才能幫你看喔...
引言: PostgreSQL 的確有支援這個語法 我用 select 可以 select 出資料 但用 delete 卻會出現 error creating cursor handle (select 就不會) 但之後再去看 Database 中的資料的確有被刪除 請問為什麼會有這個 error message 呢 ?? thanks !
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-01-10 10:27:42 IP:211.22.xxx.xxx 未訂閱
if length(edit1.text) = 2 then str := '0' edit1.text else if length(edit1.text) = 3 then str := edit1.text; ==> 從 edit1 中取得年份 if Combobox1.Text = '海二課' then begin if var_grp = 'G1' then begin if Combobox2.Text = '採購基本資料' then begin sqlCommand := 'delete from PC_BS where substring(PC_paper_num,2,3)=' char(39) str char(39); DataModule89.Query1.SQL.Clear; DataModule89.Query1.SQL.Add(sqlCommand); DataModule89.Query1.Open; end; end; end; 我的程式碼就這麼簡單, 沒什麼亂七八糟的東西啊 !! 謝謝您撥冗幫忙 !!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-01-10 10:35:23 IP:211.74.xxx.xxx 未訂閱
sqlCommand := 'delete from PC_BS where substring(PC_paper_num,2,3)=' #39 str #39;//這句改這樣 DataModule89.Query1.Close;//加上這句試看看 DataModule89.Query1.SQL.Clear; DataModule89.Query1.SQL.Add(sqlCommand); DataModule89.Query1.Open;
引言: if length(edit1.text) = 2 then str := '0' edit1.text else if length(edit1.text) = 3 then str := edit1.text; ==> 從 edit1 中取得年份 if Combobox1.Text = '海二課' then begin if var_grp = 'G1' then begin if Combobox2.Text = '採購基本資料' then begin sqlCommand := 'delete from PC_BS where substring(PC_paper_num,2,3)=' char(39) str char(39); DataModule89.Query1.SQL.Clear; DataModule89.Query1.SQL.Add(sqlCommand); DataModule89.Query1.Open; end; end; end; 我的程式碼就這麼簡單, 沒什麼亂七八糟的東西啊 !! 謝謝您撥冗幫忙 !!
發表人 - chih 於 2003/01/10 10:37:20
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-01-10 10:57:59 IP:211.22.xxx.xxx 未訂閱
加了 DataModule89.Query1.Close; 後情況還是相同耶 !!
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-01-10 10:58:18 IP:152.104.xxx.xxx 未訂閱
書上有說需要傳回資料用 Open 否則使用 ExecSQL , 不管是 TQuery or TADOQuery , 你的語法是使用Delete 怎會用Open , 請仔細看自己的程式也參考一下手冊,謝謝!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-01-10 11:01:49 IP:211.74.xxx.xxx 未訂閱
忘記了.. 這句 DataModule89.Query1.Open; 改成這樣 DataModule89.Query1.ExecSQL;
引言: 加了 DataModule89.Query1.Close; 後情況還是相同耶 !
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-01-10 11:27:32 IP:61.219.xxx.xxx 未訂閱
引言: 書上有說需要傳回資料用 Open 否則使用 ExecSQL , 不管是 TQuery or TADOQuery , 你的語法是使用Delete 怎會用Open , 請仔細看自己的程式也參考一下手冊,謝謝!
妳的問題出在如 懷舊的人 所云. 另外以 SQL 而言 , 用 "like" 效率比 "substring" 好很多喔 ! /* 使用中文很辛苦,中華男兒當自強 */
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-01-10 11:40:19 IP:211.74.xxx.xxx 未訂閱
那就要改成這樣了 'delete from PC_BS where PC_paper_num LIKE' #39 '_' str '%' #39;
引言: 妳的問題出在如 懷舊的人 所云. 另外以 SQL 而言 , 用 "like" 效率比 "substring" 好很多喔 ! /* 使用中文很辛苦,中華男兒當自強 */
系統時間:2024-06-26 7:39:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!