我想从引号之间有整数的特定字段中删除引号。
从这一行开始:“ AAA”,“ 99”
此行:“ AAA”,99
这是我的字符串:
require
答案 0 :(得分:3)
1)用','分割成表格。 (我使用的是string_split,在MSSQL 2016+中受支持-在早期的SQL版本中,有许多方法可以implement split functions。)
2)使用REPLACE(value,'“','')和ISNUMERIC
找出哪些值是数字。
3)使用FOR XML PATH/STUFF重新添加逗号。
DECLARE @str VARCHAR(25) = '"name","99","email","112"'
SELECT STUFF(
(
SELECT ',' +
CASE
WHEN ISNUMERIC(REPLACE(value, '"', '')) = 1
THEN REPLACE(value, '"', '')
ELSE value
END
FROM STRING_SPLIT(@str, ',')
FOR XML PATH('')
), 1, 1, '')
返回:
"name",99,"email",112
答案 1 :(得分:1)
$string = '"name","99","email","112"';
$string = str_replace('"', '', $string);
$strings = explode(",", $string);
foreach($strings as $key => $string) {
$strings[$key] = preg_match('/^[0-9]*$/', $string)
? intval($string) : '"'.$string.'"';
}
$string = implode(",",$strings)