當前位置:首頁 » 數據倉庫 » 資料庫第一個逗號位置
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫第一個逗號位置

發布時間: 2022-10-08 01:32:56

sql 查詢指定字元串的位置

可用charindex函數。

如:查找字元串中「你好」的位置

執行:

selectcharindex('你好','2432你好dsfasdf')

結果:

結論:「你好」中的「你」的起始位置是5,所以這樣就能判斷出指定字元的位置了。

② oracle資料庫中的instr的具體用法,在網上搜了很多,最終還是不明白,請教高手解釋。

首先,你運行下這句

selectinstr('123,456',',')fromal

這個就是要查找逗號在123,456中的位置,結果是4,這個你應該明白吧,就是左數第4位是逗號

然後。這句

selectinstr('123,456,789',',')fromal

結果還是4,因為後邊不加參數的話,就代表oracle要從最左端起,找第一個逗號,所以還是4,當你想查第二個逗號的位置的時候

selectinstr('123,456,789',',',5)fromal

後邊多了一個5,也就是以5為起始位,開始找第一個逗號,所以最後結果就是8,也就是你要找的第二個逗號的位置了

4個參數

selectinstr('123,456,789',',',1,2)fromal

就是代表從第一位開始取,取第二個逗號的位置,結果是8,如果2換成3的話,因為不存在第三個逗號,所以返回0

③ 怎樣解決資料庫數據存在逗號問題

access,mssql及mysql中的逗號不存在什麼問題

access存在日文的問題,其他資料庫都沒有的!

樓主用的是什麼資料庫?

④ 求祝 sql中 取一個欄位里第一個逗號前的數值。

Declare @a varchar(1000)
Declare @i int
Set @i = 0
Set @a = 'A,B,C,D,E,F,G,H,I'
While(@i <=Len(@a))
Begin
Print Substring(@a,CHARINDEX(',',@a)+@i-1,1)
Set @i = @i + 2
ENd
可以取出裡面所有的字母

⑤ 高分,在線等。編寫JAVA代碼,實現一個字元串的第一個逗號查找

privatestaticStringstr="5,95,137.5,125";

publicstaticvoidmain(String[]args){
Stringfirst=str.substring(0,str.indexOf(","));
intfirstNum=Integer.parseInt(first);
if(firstNum>5){
System.out.println(1);
}elseif(firstNum==5){
System.out.println(0);
}else{
System.out.println(2);
}
}

⑥ Mysql資料庫一個欄位內多個值如何統計個數

CREATE TABLE person (
name varchar(20)
);
INSERT INTO person VALUES ('a,b,c');
INSERT INTO person VALUES ('a,b');
INSERT INTO person VALUES ('a,c');
DELIMITER //
DROP FUNCTION GetTextCount //
/**********
-- 獲取字元串中有幾個部分.
**********/
CREATE FUNCTION GetTextCount(pSourceText VARCHAR(255), pDivChar CHAR(1))
RETURNS TINYINT
BEGIN
-- 預期結果.
DECLARE vResult TINYINT;
-- 當前逗號的位置.
DECLARE vIndex INT;
-- 前一個逗號的位置.
DECLARE vPrevIndex INT;
-- 結果的初始值.
SET vResult = 1;
-- 查詢第一個 逗號的位置.
SET vIndex = INSTR(pSourceText, pDivChar);
IF vIndex = 0 THEN
-- 參數中沒有逗號,直接返回.
RETURN vResult;
END IF;
-- 初始化情況,前一個逗號不存在.
SET vPrevIndex = 0;
-- 循環處理。
WHILE vIndex > 0 DO
-- 結果遞增.
SET vResult = vResult + 1;
-- 前一個逗號的位置 = 當前逗號的位置
SET vPrevIndex = vIndex;
-- 查詢下一個逗號的位置.
SET vIndex = LOCATE(pDivChar, pSourceText, vPrevIndex + 1);
END WHILE;
-- 返回結果.
RETURN vResult;
END;
//
DROP FUNCTION GetTextValue //
/**********
-- 獲取字元串中具體某一個部分的數據.
**********/
CREATE FUNCTION GetTextValue(pSourceText VARCHAR(255), pDivChar CHAR(1), pIndex TINYINT)
RETURNS VARCHAR(255)
BEGIN
-- 預期結果.
DECLARE vResult VARCHAR(255);
IF pIndex = 1 THEN
SELECT SUBSTRING_INDEX(pSourceText, pDivChar, 1) INTO vResult;
ELSE
SELECT
REPLACE(
SUBSTRING_INDEX(pSourceText, pDivChar, pIndex),
CONCAT(SUBSTRING_INDEX(pSourceText, pDivChar, pIndex - 1) , pDivChar),
'') INTO vResult;
END IF;
-- 返回.
RETURN vResult;
END;
//
DELIMITER ;
SELECT
GetTextValue(t.name, ',', MaxNum.No) AS `名稱`,
COUNT(*) AS `個數`
FROM
person t,
(SELECT 1 No UNION ALL
SELECT 2 No UNION ALL
SELECT 3 No UNION ALL
SELECT 4 No UNION ALL
SELECT 5 No ) MaxNum
WHERE
GetTextCount(t.name, ',') >= MaxNum.No
GROUP BY
GetTextValue(t.name, ',', MaxNum.No);
+------+------+
| 名稱 | 個數 |
+------+------+
| a | 3 |
| b | 2 |
| c | 2 |
+------+------+
3 rows in set (0.01 sec)

⑦ SQL 查詢的時候截取欄位在逗號前的部分

可以使用substring_index(column, ',', 2)方法來實現。

具體SQL語句為:

select id,name,substring_index(address, ',', 2) from people;

substring_index(address, ',', 2)的意思是截取第二個 ',' 之前的所有字元。


(7)資料庫第一個逗號位置擴展閱讀

sql中substring()的相關用法介紹:

1、SUBSTRING(name,3) 截取name這個欄位 從第三個字元開始,之後的所有個字元

SELECT SUBSTRING('1234567',3)

結果:34567

2、SUBSTRING(name, -4) 截取name這個欄位的第 4 個字元位置(倒數)開始取,直到結束

SELECT SUBSTRING('1234567',-4)

結果:4567

3、SUBSTRING(name, -4,2) 截取name這個欄位的第 4 個字元位置(倒數)開始取,只截取之後的2個字元

SELECT SUBSTRING('1234567',-4,2)

結果:45

4、substring_index('www..com', '.', 2) 截取第二個 '.' 之前的所有字元

SELECT substring_index('www..com', '.', 2)

⑧ 一條數據,在sql中 查找倒數第一個逗號的位置

DECLARE @Str VARCHAR(50)
SET @Str = ',123456,'
select LEN(@Str) - CHARINDEX(',', REVERSE(@Str)) + 1
----返回值---
8

⑨ Mysql資料庫一個欄位內多個值如何統計個數




CREATETABLEperson(
namevarchar(20)
);

INSERTINTOpersonVALUES('a,b,c');
INSERTINTOpersonVALUES('a,b');
INSERTINTOpersonVALUES('a,c');
DELIMITER//
DROPFUNCTIONGetTextCount//

/**********
--獲取字元串中有幾個部分.
**********/
CREATEFUNCTIONGetTextCount(pSourceTextVARCHAR(255),pDivCharCHAR(1))
RETURNSTINYINT
BEGIN
--預期結果.
DECLAREvResultTINYINT;
--當前逗號的位置.
DECLAREvIndexINT;
--前一個逗號的位置.
DECLAREvPrevIndexINT;

--結果的初始值.
SETvResult=1;

--查詢第一個逗號的位置.
SETvIndex=INSTR(pSourceText,pDivChar);
IFvIndex=0THEN
--參數中沒有逗號,直接返回.
RETURNvResult;
ENDIF;

--初始化情況,前一個逗號不存在.
SETvPrevIndex=0;

--循環處理。
WHILEvIndex>0DO
--結果遞增.
SETvResult=vResult+1;
--前一個逗號的位置=當前逗號的位置
SETvPrevIndex=vIndex;
--查詢下一個逗號的位置.
SETvIndex=LOCATE(pDivChar,pSourceText,vPrevIndex+1);
ENDWHILE;

--返回結果.
RETURNvResult;
END;
//DROPFUNCTIONGetTextValue//

/**********
--獲取字元串中具體某一個部分的數據.
**********/
CREATEFUNCTIONGetTextValue(pSourceTextVARCHAR(255),pDivCharCHAR(1),pIndexTINYINT)
RETURNSVARCHAR(255)
BEGIN
--預期結果.
DECLAREvResultVARCHAR(255);

IFpIndex=1THEN
SELECTSUBSTRING_INDEX(pSourceText,pDivChar,1)INTOvResult;
ELSE
SELECT
REPLACE(
SUBSTRING_INDEX(pSourceText,pDivChar,pIndex),
CONCAT(SUBSTRING_INDEX(pSourceText,pDivChar,pIndex-1),pDivChar),
'')INTOvResult;
ENDIF;

--返回.
RETURNvResult;
END;
//


DELIMITER;
SELECT
GetTextValue(t.name,',',MaxNum.No)AS`名稱`,
COUNT(*)AS`個數`
FROM
persont,
(SELECT1NoUNIONALL
SELECT2NoUNIONALL
SELECT3NoUNIONALL
SELECT4NoUNIONALL
SELECT5No)MaxNum
WHERE
GetTextCount(t.name,',')>=MaxNum.No
GROUPBY
GetTextValue(t.name,',',MaxNum.No);

+------+------+
|名稱|個數|
+------+------+
|a|3|
|b|2|
|c|2|
+------+------+
3rowsinset(0.01sec)